как определить кодировку текста - PullRequest
5 голосов
/ 09 июля 2010

Я знаю, что файл UTF имеет спецификацию для определения кодировки, но как насчет другой кодировки, которая имеет Понятия не имею, как угадать эту кодировку.

Я новый программист Java. Я написал код для угадывания кодировки UTF с использованием спецификации UTF. но у меня проблема с другой кодировкой. Как мне их угадать.

Кто-нибудь может мне помочь? заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 09 июля 2010

Этот вопрос является дубликатом нескольких предыдущих единиц .Существует как минимум две библиотеки для Java, которые пытаются угадать кодировку (хотя имейте в виду, что нет возможности угадать правильные 100% времени).

Конечно, если вы знаете, кодировка будет только одним из трех или четырех вариантовВы могли бы написать более точный алгоритм угадывания.

0 голосов
/ 09 июля 2010

Если вы не знаете кодировку и не имеете никаких индикаторов (например, спецификации), не всегда возможно точно «угадать» кодировку.Существуют некоторые указатели, которые могут дать вам подсказки.

Например, файл ISO-8859-1 (обычно) не будет иметь символов 0x00, однако в файле UTF-16 их будет множество.

Наиболее распространенное решение - позволить пользователю выбрать кодировку, если вы не можете ее обнаружить.

0 голосов
/ 09 июля 2010

Краткий ответ: вы не можете.

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

При этом большинство приложений, поддерживающих Unicode, реализуют какой-то алгоритм угадывания. Прочитайте начало файла и найдите определенные подписи.

...