Java解析UTF8

Jac*_*ack 1 java utf-8 character-encoding

我有一个UTF8文件的以下问题,结构如下:

FIELD1§FIELD2§FIELD3§FIELD4

查看它用于A7编码的文件的十六进制值§.所以根据这个编码它应该是UTF8,但它很奇怪,因为A7> 7F所以1个字节不足以编纂§.

所以我尝试直接BufferedReader使用指定的字符集:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(input), utf8))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试用字符串标记字符串时

SmartTokenizer st = new SmartTokenizer(toTokenize, "§")
Run Code Online (Sandbox Code Playgroud)

(这SmartTokenizerStringTokenizer保留空标记的修改版本)

不会发生分裂,如果我尝试打印我获得的字符串

FIELD1?FIELD2?FIELD3?...

因此§在文件中使用的不同于指定为分隔符的文件,并且它也无法打印出来.

那么这里的问题是什么?也许原始文件应该使用2个字节来存储§

Joa*_*uer 6

UTF-8编码§0xC2 0xA7.

如果文件用于A7表示§,那么它可能是ISO-8859-1(或其他ISO-8859-*或其衍生物)中的写法.