Насколько распространен UTF-8 на самом деле? - PullRequest
16 голосов
/ 26 июня 2009

Насколько широко распространено использование UTF-8 для неанглийского текста, в Интернете или иным образом? Меня интересуют как статистические данные, так и ситуация в конкретных странах.

Я знаю, что ISO-8859-1 (или 15) прочно укоренился в Германии - но как насчет языков, где вы все равно должны использовать многобайтовые кодировки, таких как Япония или Китай? Я знаю, что несколько лет назад Япония все еще использовала различные JIS-кодировки почти исключительно.

Принимая во внимание эти наблюдения, правда ли, что UTF-8 является наиболее распространенным многобайтовым кодированием? Или было бы правильнее сказать, что он в основном используется только внутри новых приложений, которые специально предназначены для международного рынка и / или должны работать с многоязычными текстами? Приемлемо ли в настоящее время иметь приложение, которое использует ТОЛЬКО UTF-8 в своих выходных данных, или каждый национальный рынок ожидает, что выходные файлы будут иметь другую унаследованную кодировку, чтобы их могли использовать другие приложения.

Edit: Я НЕ спрашиваю, полезен ли UTF-8 или как он работает. Я все это знаю. Я спрашиваю, широко ли он применяется и заменяет более старые кодировки.

Ответы [ 13 ]

2 голосов
/ 28 июня 2009

UTF-8 популярен, потому что он обычно более компактен, чем UTF-16, с полной точностью. Это также не страдает от проблемы порядка байтов UTF-16.

Это делает его отличным выбором в качестве формата обмена, но поскольку символы кодируются в различные байтовые последовательности (от одного до четырех байтов на символ), с ним не всегда приятно работать. Так что обычно лучше зарезервировать UTF-8 для обмена данными и использовать преобразование в точках входа и выхода.

Для системного внутреннего хранилища (включая дисковые файлы и базы данных), вероятно, будет лучше использовать собственный UTF-16, UTF-16 с некоторым другим сжатием или некоторую 8-битную кодировку "ANSI". Последнее, конечно, ограничивает вас определенной кодовой страницей, и вы можете страдать, если вы работаете с многоязычным текстом. Для локальной обработки данных вам, вероятно, понадобится кодировка "ANSI" или собственный UTF-16. Таким образом, обработка символов становится намного проще .

Так что я бы предположил, что UTF-8 популярен внешне , но реже внутри. Внутренне UTF-8 кажется кошмаром для работы, кроме статических сгустков текста.

Некоторые СУБД, похоже, предпочитают постоянно хранить текстовые объекты в формате UTF-8. Это дает преимущество сжатия (по сравнению с хранением UTF-16) без попытки разработать другую схему сжатия. Поскольку преобразование в / из UTF-8 очень распространено, они, вероятно, используют системные библиотеки, которые, как известно, работают эффективно и надежно.

Самые большие проблемы со схемами "ANSI" связаны с одним небольшим набором символов и необходимостью обрабатывать последовательности многобайтовых наборов символов для языков с большими алфавитами.

1 голос
/ 26 июня 2009

Меня интересуют как статистические данные и ситуация в конкретных страны.

Я думаю, что это в большей степени зависит от проблемной области и ее истории, чем от страны, в которой используется приложение.

Если вы создаете приложение, для которого все ваши конкуренты выводят, например, ISO-8859-1 (или в течение большей части последних 10 лет), я думаю, что все ваши (потенциальные) клиенты ожидают, что вы откроете такие файлы без особых хлопот.

Тем не менее, я не думаю, что в большинстве случаев все еще нужно выводить что-либо, кроме файлов в кодировке UTF-8. Большинство программ справляются в эти дни, но, опять же, YMMV в зависимости от вашего целевого рынка.

1 голос
/ 26 июня 2009

И Java, и C # используют UTF-16 для внутреннего использования и могут легко переводиться в другие кодировки; они довольно хорошо укоренились в мире предприятий.

Я бы сказал, что принимать только UTF в качестве входных данных не так уж важно в наши дни; Действуй.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...