Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Как правило, неправильное определение кодировки приводит к моджибаке .

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

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

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

Из-за ненадежности эвристического обнаружения лучше правильно маркировать наборы данных с правильной кодировкой. В документах HTML, обслуживаемых через Интернет по протоколу HTTP, должна быть указана внешняя кодировка с использованием заголовка Content-Type : .

Content-Type: text / html; charset = UTF-8.

Изолированный HTML-документ, например, редактируемый как файл на диске, может подразумевать такой заголовок с помощью метатега внутри файла:

< meta  http-Equiv = "Content-Type"  content = "text / html; charset = UTF-8"  >

или с новым метатипом в HTML5 [1]

< meta  charset = "utf-8"  >

Если документ является Unicode, то некоторые кодировки UTF явно помечают документ встроенной меткой начального порядка байтов (BOM).

См. Также [ править ]

Ссылки [ править ]

Внешние ссылки [ править ]