Как определить, какая кодировка набора символов в Java? - PullRequest
7 голосов
/ 12 февраля 2010

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

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

Есть идеи?

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

Взгляните на jchardet , библиотеку, портированную из браузера Mozilla, которая специализируется на "угадывании" кодировки документа.

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

0 голосов
/ 12 февраля 2010

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

например:

для UTF-8 первые 3 байта будут EF, BB, BF

для кодировок, отличных от кодировки Unicode, я не уверен ...

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