История изменений
Исправление ilammy, (текущая версия) :
Потому что меньше особых случаев, которые надо обрабатывать.
В UTF-16 такой случай только один — непарные суррогаты. Все остальные пары байтов технически корректны. В UTF-8 случаев шесть семь: преждевременный обрыв последовательности; использование пяти- и шестибайтовых последовательностей; использование четырёхбайтовых последовательностей, кодирующих значения больше 10FFFF; overlong encoding; использование суррогатов; использование байтов FE и FF; некорректное начало последовательности. Каждый из этих случаев необходимо корректно обрабатывать.
Кроме того, меньше вариантов кодирования. В UTF-16 большая часть реально используемых символов влазит в два байта, поэтому некоторые тормоза с суррогатами приемлемы. В UTF-8 популярные символы занимают уже один, два, или три байта.
У UTF-8 есть свои плюсы: самосинхронизируемость и детектирование помех; совместимость с ASCII; меньше места на тексты, состоящие преимущественно из ASCII; независимость от порядка байт в слове. Но, очевидно, это не самая удобная кодировка для обработки строк в памяти. UTF-8 — хорошая кодировка для передачи и хранения строк.
Исходная версия ilammy, :
Потому что меньше особых случаев, которые надо обрабатывать.
В UTF-16 такой случай только один — непарные суррогаты. Все остальные пары байтов технически корректны. В UTF-8 случаев шесть: преждевременный обрыв последовательности; использование пяти- и шестибайтовых последовательностей; использование четырёхбайтовых последовательностей, кодирующих значения больше 10FFFF; overlong encoding; использование суррогатов; использование байтов FE и FF. Каждый из этих случаев необходимо корректно обрабатывать.
Кроме того, меньше вариантов кодирования. В UTF-16 большая часть реально используемых символов влазит в два байта, поэтому некоторые тормоза с суррогатами приемлемы. В UTF-8 популярные символы занимают уже один, два, или три байта.
У UTF-8 есть свои плюсы: самосинхронизируемость и детектирование помех; совместимость с ASCII; меньше места на тексты, состоящие преимущественно из ASCII; независимость от порядка байт в слове. Но, очевидно, это не самая удобная кодировка для обработки строк в памяти. UTF-8 — хорошая кодировка для передачи и хранения строк.