Я знаю, что файл UTF имеет BOM для определения кодирования, но что относительно другого кодирования, которое не имеет никакой подсказки, как предположить то кодирование.
Я - новый программист Java. Я написал код для предположения UTF, кодирующего использующий UTF BOM. но у меня есть проблема с другим кодированием. Как я предполагаю их.
Кто-либо может помочь мне?заранее спасибо.
Этот вопрос является дубликатом нескольких предыдущих вопросов . Существует по крайней мере две библиотеки для Java, которые пытаются угадать кодировку (хотя имейте в виду, что нет способа угадать правильно в 100% случаев).
Конечно, если вы знаете, что кодировка будет только одной из трех или четырех вариантов, вы можете написать более точный алгоритм угадывания.
Короткий ответ: нельзя.
Даже в UTF-8 спецификация является совершенно необязательной, и часто рекомендуется не использовать ее, поскольку многие приложения не обрабатывают ее должным образом и просто отображают ее, как если бы это был печатный символ. Первоначальная цель маркеров порядка байтов состояла в том, чтобы определить порядковый номер файлов UTF-16.
Тем не менее, большинство приложений, которые обрабатывают Unicode, реализуют какой-то алгоритм угадывания. Прочитайте начало файла и найдите определенные подписи.
Если вы не знаете кодировку и не имеете никаких индикаторов (например, спецификации), не всегда возможно точно «угадать» кодировку. Существуют некоторые указатели, которые могут дать вам подсказки.
Например, файл ISO-8859-1 (обычно) не будет иметь 0x00 символов, однако файл UTF-16 имеет их множество.
Наиболее распространенным решением является возможность позволить пользователю выбрать кодировку, если вы не можете ее обнаружить.