как определить текстовое кодирование

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

Я - новый программист Java. Я написал код для предположения UTF, кодирующего использующий UTF BOM. но у меня есть проблема с другим кодированием. Как я предполагаю их.

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

5
задан Mariusz Jamro 2 March 2012 в 23:21
поделиться

3 ответа

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

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

4
ответ дан 15 December 2019 в 00:48
поделиться

Короткий ответ: нельзя.

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

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

0
ответ дан 15 December 2019 в 00:48
поделиться

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

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

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

0
ответ дан 15 December 2019 в 00:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: