2010-04-06 5 views
1

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

FIELD1§FIELD2§FIELD3§FIELD4

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

Так что я попытался использовать непосредственно в BufferedReader с заданной кодировкой:

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

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

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

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

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

FIELD1? FIELD2? FIELD3? ...

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

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

ответ

6

-8 UTF кодирование § является 0xC2 0xA7.

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

+0

Да, я искал неправильное направление, пытаясь преобразовать стандарты и т. Д. Я просто сказал BufferedReader читать в соответствии с ISO-8859-1 charset .. спасибо! – Jack

1

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

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

Смежные вопросы