Jump to content

Обнаружение кодировки

Обнаружение кодировки символов , обнаружение набора символов или обнаружение кодовой страницы — это процесс эвристического угадывания кодировки символов серии байтов, представляющих текст. Этот метод признан ненадежным и используется только в том случае, если определенные метаданные , такие как HTTP-запрос, Content-Type: заголовок либо недоступен, либо считается ненадежным.

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

В общем, неправильное определение кодировки приводит к mojibake .

Одним из немногих случаев, когда определение кодировки работает надежно, является обнаружение UTF-8 . Это связано с большим процентом недопустимых последовательностей байтов в UTF-8, поэтому текст в любой другой кодировке, в которой используются байты с установленным старшим битом, крайне маловероятно пройдет тест на достоверность UTF-8. Однако плохо написанные процедуры определения кодировки не выполняют сначала надежный тест UTF-8 и могут решить, что UTF-8 — это какая-то другая кодировка. Например, часто веб-сайты в кодировке UTF-8, содержащие название немецкого города Мюнхен, отображались как München, поскольку код решал, что это кодировка ISO-8859, прежде чем (или без нее) даже проверить, было ли это кодировкой. UTF-8.

UTF-16 достаточно надежен для обнаружения из-за большого количества символов новой строки (U+000A) и пробелов (U+0020), которые необходимо обнаружить при разделении данных на 16-битные слова, а также большого количества NUL-байтов, причем все по четным значениям. или странные места. проверить общие символы Необходимо , полагаясь на проверку правильности текста. UTF-16 не работает: операционная система Windows ошибочно распознает фразу « Буш скрыл факты » (без новой строки) в ASCII как китайскую UTF- 16LE , поскольку все пары байтов соответствуют назначенным символам Юникода в UTF-16LE.

Обнаружение кодировки особенно ненадежно в Европе, в среде смешанных кодировок ISO-8859. Это тесно связанные восьмибитные кодировки, нижняя половина которых частично совпадает с ASCII , и все расположения байтов допустимы. Не существует технического способа отличить эти кодировки друг от друга, и их распознавание зависит от определения особенностей языка, таких как частота букв или написание.

Из-за ненадежности эвристического обнаружения лучше помечать наборы данных правильной кодировкой. См. Кодировки символов в HTML#Указание кодировки символов документа . Несмотря на то, что UTF-8 и UTF-16 легко обнаружить, некоторые системы требуют кодировки UTF, чтобы явно пометить документ префиксом метки порядка байтов (BOM).

См. также

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0b3fd5309e3b9ecfe70a9ac13043f7a5__1712577300
URL1:https://arc.ask3.ru/arc/aa/0b/a5/0b3fd5309e3b9ecfe70a9ac13043f7a5.html
Заголовок, (Title) документа по адресу, URL1:
Charset detection - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)