На работе я сталкиваюсь с множеством японских текстовых файлов в Shift-JIS и других кодировках. Это вызывает много проблем mojibake (нечитаемый символ) для всех пользователей компьютера. Unicode предназначался для решения такого рода проблем путем определения единого набора символов для всех языков, и сериализация UTF-8 рекомендуется для использования в Интернете. Так почему же не все переходят с японских кодировок на UTF-8? Какие проблемы или недостатки UTF-8 сдерживают людей?
РЕДАКТИРОВАТЬ: W3C перечисляет некоторые известные проблемы с Unicode , это тоже может быть причиной?
legacy
unicode
character-encoding
Николас Рауль
источник
источник
Ответы:
Одним словом: наследие.
Shift-JIS и другие кодировки использовались до того, как Unicode стал доступным / популярным, поскольку это был единственный способ кодировать японский язык вообще. Компании инвестировали в инфраструктуру, которая поддерживала только Shift-JIS. Даже если эта инфраструктура теперь поддерживает Unicode, они по-прежнему застряли в Shift-JIS по разным причинам, начиная от того, работает ли она, не трогайте ли ее по сравнению с кодировкой. на миграцию всех существующих документов слишком дорого .
Есть много западных компаний, которые все еще используют ASCII или latin-1 по тем же причинам, только никто не замечает, потому что это никогда не вызывает проблемы.
источник
Вот причины, которые, как я помню, были приведены для того, чтобы не делать UTF-8 или другое представление Unicode кодировкой символов по умолчанию для языка сценариев Ruby, который в основном разработан в Японии:
Очевидно, что эти рассуждения воспринимаются японскими пользователями настолько же нелепо, насколько это было бы доказательством для английских читателей, что, поскольку латинский алфавит разработан на основе греческого алфавита, достаточно иметь только одну кодовую точку для греческой альфы ». α и латинский «a», и пусть внешний вид определяется используемым шрифтом. (То же самое для "β" = "b", "γ" = "g" и т. Д.)
(Обратите внимание, что я бы не смог включить греческие символы здесь в stackexchange, если бы это было так.)
Могло быть дано больше причин, которые я больше не помню.
источник
Ответ deceze имеет очень сильный элемент правды, но есть еще одна причина, по которой Shift-JIS и другие все еще используются: UTF-8 ужасно неэффективен для некоторых языков, в основном в наборе CJK. Shift-JIS, IIRC, является двухбайтовой кодировкой шириной, тогда как UTF-8 обычно является 3-байтовой, а иногда даже 4-байтовой в своих кодировках с CJK и другими.
источник
Подсчитайте размер строки / использование памяти среди основных причин.
В UTF-8 восточноазиатским языкам часто требуется 3 или более байтов для своих символов. В среднем им требуется на 50% больше памяти, чем при использовании UTF-16 - последний из которых уже менее эффективен, чем собственное кодирование.
Другой основной причиной было бы наследство, как указывает децезе.
источник
Наследие и размер хранилища, как говорили другие, но есть еще одна вещь: персонажи катакана.
Для представления символов катаканы в Shift-JIS требуется всего один байт, поэтому японский текст, включая катакану, занимает менее 2 байтов на символ (1,5 для микса 50/50), что делает Shift-JIS несколько более эффективным, чем UTF-16 (2 байта). / char) и гораздо более эффективный, чем UTF-8 (3 байта / char).
Дешевое хранение должно было сделать эту проблему намного меньше, но, очевидно, нет.
источник