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