Другие языки программирования и технологии
Какой профит для кириллицы при использовании UTF-16 вместо UTF-8?
Профит в ускорении операций, за счёт фиксированного размера символов. Например, если нужно взять N-ый символ из строки, то в UTF-16 достаточно просто взять два байта по смещению N*2. А в UTF-8 придётся в цикле перебирать строку, проверяя длину каждого символа.
Абсолютно никакого. Когда кодировка UTF-16 создавалась, она казалась стандартизаторам хорошей идеей. Но время шло, код-во символов в Unicode росло и сейчас UTF-16 превратилась в химеру с переменной длинной символов (часть символов - два байта, часть - четыре; потому East RX совершенно не прав, говоря об ускорении операций) и уродливыми правилами определения длины символа и декодирования 4-байтных символов.
В современном мире имеет смысл использовать либо UTF-8, либо UTF-32. Но, к сожалению, исторически сложилось, что UTF-16 применяется много где.
В современном мире имеет смысл использовать либо UTF-8, либо UTF-32. Но, к сожалению, исторически сложилось, что UTF-16 применяется много где.
Henrikas Pocius
А если точно знать, что в тексте только латиница и кириллица? То есть, не более 2 байтов на символ.
Виктор Кущ
Я имел в виду только простой текст, без экзотических символов (раз в вопросе речь о кириллице). В этом случае будет именно как я написал - в UTF-8 буквы будут по 2 байта, а пробелы, цифры и знаки препинания - по 1 байту, тогда как в UTF-16 все символы будут одинаковые, по 2 байта.
при вызове системных функций винды не будет перекодировки
под пингвинами выгода со знаком минус
под пингвинами выгода со знаком минус
Первая версия Юникода (1991 г.) представляла собой 16-битную кодировку с фиксированной шириной символа; общее число разных символов было 216 (65 536). Во второй версии Юникода (1996 г.) было решено значительно расширить кодовую область; для сохранения совместимости с теми системами, где уже был реализован 16-битный Юникод, и была создана UTF-16. Область 0xD800—0xDFFF, отведённая для суррогатных пар, ранее принадлежала к области «символов для частного использования».
Поскольку в UTF-16 можно отобразить 220+216−2048 (1 112 064) символов, то это число и было выбрано в качестве новой величины кодового пространства Юникода.
Поскольку в UTF-16 можно отобразить 220+216−2048 (1 112 064) символов, то это число и было выбрано в качестве новой величины кодового пространства Юникода.
Henrikas Pocius
Иии?
Игорь Бахматов
"Поскольку в UTF-16 можно отобразить 220+216−2048 (1 112 064)"
В UTF-8 нельзя закодировать все эти символы?
В UTF-8 нельзя закодировать все эти символы?
Похожие вопросы
- Какую все же кодировку при создание веб страниц лучше использовать? utf-8 или win1251? и почему?
- Windows-1251 vs UTF-8 (Прокомментируйте пожалуйста -->...) Спасибо!
- Pascal | URL Encode\Decode | UTF-8
- Какая разница между cp-125 и UTF-8 ?
- Кодировка UTF-8.
- Нужно умножить матрицу A на матрицу B. A=(4 8) (3 9) (2 5) B=(11 22 16),(9 15 8) Нужно написать кодmпомогите! Паскаль
- Можно ли создать собственную систему чисто на русской кириллице?
- Кто может кратко написать как перевести из 2-х счисления в 8-х, 16-х, 10-х. А также наоборот из 10-х,16-х,8-х в 2-х
- В чём необходимость использования блока try catch вместо if в С++ ?
- Если процессоры работают на машинном коде то почему вместо использования старых языков создаются новые?
8битную ютф можно было модифицировать таким образом чтобы она тоже была фиксированного размера, а выбрана была именно 16, просто люди перестали экономить место вот и всё.