Разбор Java UTF8 - PullRequest
       15

Разбор Java UTF8

1 голос
/ 06 апреля 2010

У меня следующая проблема с файлами UTF8, структурированными следующим образом:

FIELD1§FIELD2§FIELD3§FIELD4

Просмотр шестнадцатеричных значений используемого файлаA7 для кодификации §.Таким образом, согласно этой кодификации это должен быть UTF8, но это странно, потому что A7> 7F, поэтому одного байта не должно быть достаточно для кодификации §.

Поэтому я попытался использовать BufferedReaderс указанным набором символов:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(input), utf8))

, но когда я пытаюсь токенизировать строку с

SmartTokenizer st = new SmartTokenizer(toTokenize, "§")

(SmartTokenizer является модифицированной версией StringTokenizer, которая содержит пустые токены)

разделения не происходит, и если я пытаюсь напечатать строку, я получаю

FIELD1? FIELD2? FIELD3? ...

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

Так в чем здесь проблема?Может быть, оригинальный файл должен использовать 2 байта для хранения §?

Ответы [ 2 ]

6 голосов
/ 06 апреля 2010

Кодировка UTF-8 § равна 0xC2 0xA7.

Если файл использует A7 для обозначения §, то он, вероятно, записан в ISO-8859-1 (или другом ISO-8859- * или его производных).

1 голос
/ 06 апреля 2010

Просмотр шестнадцатеричных значений файла, который он использует A7 для кодификации §. Так согласно этой кодификации это должно быть UTF8

А почему? Это ISO8859-1 (или латиница-1 или связанный) http://en.wikipedia.org/wiki/ISO/IEC_8859-1

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