2010-04-06 72 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

§的UTF-8编码是0xC2 0xA7

如果文件使用A7表示§,那么它可能在ISO-8859-1 writtein(或其他ISO-8859- *或它们的衍生物)。

+0

是的,我试图在标准等之间进行转换后,我正在寻找错误的方向..我只是告诉BufferedReader根据ISO-8859-1字符集阅读..谢谢! – Jack 2010-04-06 17:03:01