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

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

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

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

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

Ответы [ 13 ]

15 голосов
/ 26 июня 2009

Мы используем UTF-8 в нашем мире сервис-ориентированных веб-сервисов почти исключительно - даже с «просто» западноевропейскими языками, есть достаточно «причуд» к использованию различных форматов ISO-8859-X, чтобы наши головы вращались - UTF-8 действительно полностью это решает.

Так что я бы поставил БОЛЬШОЙ голос за использование UTF-8 везде и всегда! :-) Я предполагаю, что в сервис-ориентированном мире и в средах .NET и Java это больше не проблема или потенциальная проблема.

Это просто решает так много проблем, что вам действительно не нужно постоянно иметь дело ......

Марк

9 голосов
/ 11 июля 2010
5 голосов
/ 23 августа 2010

Я склонен посещать Рунет сайты довольно часто. Многие из них до сих пор используют кодировку Windows-1251 . Также это кодировка по умолчанию в Яндекс.Почте и Mail.ru (два крупнейших почтовых сервиса в странах СНГ). Он также устанавливается в качестве кодировки содержимого по умолчанию в браузере Opera (2-е после Firefox по популярности в регионе), когда его скачивают с русского IP-адреса. Я не совсем уверен насчет других браузеров.

Причина этого довольно проста: UTF-8 требует двух байтов для кодирования букв кириллицы. Не кодированные в Юникоде кодировки требуют только 1 байта (в отличие от большинства восточных алфавитов, кириллические довольно малы). Они также имеют фиксированную длину и легко обрабатываются старыми инструментами только для ASCII.

5 голосов
/ 26 июня 2009

Я не думаю, что приемлемо просто принимать UTF-8 - вам нужно принимать UTF-8 и любую кодировку, ранее распространенную на ваших целевых рынках.

Хорошей новостью является то, что, если вы пришли из ситуации в Германии, где у вас в основном 8859-1 / 15 и ASCII, дополнительно принимаете 8859-1 и конвертируете его в UTF-8 в основном с нулевой стоимостью. Это легко обнаружить: например, использование кодировки 8859-1 ö или ü является недействительным UTF-8, даже не вдаваясь в легко обнаруживаемые недопустимые пары. Использование символов 128-159 вряд ли будет действительным 8859-1. В пределах нескольких байтов от вашего первого старшего старшего байта вы обычно можете иметь очень, очень хорошее представление о том, какая кодировка используется. И как только вы узнаете кодировку, будь то по спецификации или предположениям, вам не понадобится таблица перевода для преобразования 8859-1 в Unicode - U + 0080 до U + 00FF в точности совпадают с 0x80-0xFF в 8859-1 .

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

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

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

Mac OS X широко использует UTF-8, и это кодировка по умолчанию для пользовательских файлов, и это также относится к большинству (всех?) Основных дистрибутивов Linux. Но в Windows ... Windows-1252 (близко, но не совпадает с ISO-8859-1) по-прежнему является кодировкой по умолчанию для многих языков? По крайней мере, в Windows XP это было, но я не уверен, что это изменилось? В любом случае, до тех пор, пока значительное количество пользователей (в основном Windows) хранят файлы на своих компьютерах в кодировке Windows-1252 (или чего-то подобного), поддержка UTF-8 только вызовет горе и замешательство у многих.

Некоторая информация по конкретной стране: в Финляндии ISO-8859-1 (или 15) также все еще прочно укоренились. Например, финские IRC-каналы используют afaik, по-прежнему в основном Latin-1. (Это означает, что ребята из Linux с UTF-8 в качестве системной настройки по умолчанию, использующие текстовые клиенты (например, irssi), должны сделать некоторые обходные пути / настроить параметры.)

3 голосов
/ 11 июля 2010

Вот некоторая статистика, которую мне удалось найти:

Обе эти страницы, похоже, страдают от значительных проблем:

  • Не ясно, насколько репрезентативны их наборы выборок, особенно для неанглоязычных стран.
  • Не ясно, какие методологии использовались для сбора статистики. Подсчитывают ли они страницы или количество обращений к страницам? Как насчет загружаемого / загружаемого контента.

Более важно, статистика предназначена только для веб-контента. Более широкая статистика (например, для кодирования документов на жестких дисках пользователя), по-видимому, недоступна. (Меня это не удивляет, учитывая, насколько сложно / дорого будет проводить исследования, необходимые во многих странах.)

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

Для меня вывод заключается в том, что было бы неплохо написать свои приложения, не зависящие от кодировки символов, и позволить пользователю решать, какую кодировку символов использовать для хранения документов. Это относительно легко сделать в современных языках, таких как Java и C #.

3 голосов
/ 29 июня 2009

Пользователи символов CJK смещены по отношению к UTF-8, естественно, потому что их символы становятся 3 байта каждый вместо двух. Очевидно, в Китае предпочтение отдается их собственной 2-байтовой кодировке GBK, а не UTF-16.

Редактировать в ответ на этот комментарий @Joshua:

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

Ответ:

Кодировки GB. + И другие восточноазиатские кодировки являются кодировками переменной длины. Байты со значениями до 0x7F отображаются в основном в ASCII (иногда с небольшими изменениями). Некоторые байты с установленным старшим битом являются начальными байтами последовательностей от 2 до 4 байтов, а другие недопустимы. Так же, как UTF-8.

Поскольку «символы HTML и javascript» также являются символами ASCII, они ВСЕГДА были 1 байтом как в этих кодировках, так и в UTF-8.

2 голосов
/ 23 августа 2010

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

На W3Techs у нас есть все эти данные, но, возможно, их нелегко найти:

Например, вы получаете распределение кодировки символов на японских веб-сайтах, сначала выбрав язык: Content Languages> Japanese, а затем выберите Segmentation> Character Encodings. Это приводит вас к этому отчету: Распределение кодировок символов среди веб-сайтов, использующих японский . Вы видите: японские сайты используют 49% SHIFT-JIS и 38% UTF-8. Вы можете сделать то же самое для домена верхнего уровня, скажем, для всех сайтов .jp.

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

Вас может заинтересовать этот вопрос. Я пытался создать CW о поддержке Unicode на разных языках.

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

Хотя в нем конкретно не рассматривается вопрос - UTF-8 является единственной кодировкой символов, обязательной для реализации во всех протоколах дорожек IETF.

http://www.ietf.org/rfc/rfc2277.txt

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