我正在做一些關於common crawl數據集的工作(一個大型網絡抓取),並且我一直看到一個奇怪的編碼模式,我只是無法解決如何處理。在Java中處理錯誤編碼的UTF-16(?)
我一次又一次地看到的模式就像我猜測代表Pokémon
的字節序列50 6f 6b e9 6d 6f 6e
。
現在編碼模式並不是我最強烈的一點,但我不知道任何編碼在é
僅代表e9
有效。
這是一個有點像[UTF-16] [1]這將是fe ff 00 50 00 6f 00 6b 00 e9 00 6d 00 6f 00 6e
而且這絕對不是UTF-8這將是50 6f 6b c3 a9 6d 6f 6e
所以我只是在Java的方式後,我將這些字節解碼爲一個字符串,一個庫是理想的。
new String(bytes)
名正言順地不工作,並正確地轉換e9
來替換字符ef bf bd
(又名可怕)
就如何處理這些任何想法?
更新
我已經結束了使用的Apache提卡提供的字符集編碼檢測器[2]。效果很好。
[1] http://www.fileformat.info/info/unicode/char/e9/index.htm
[2] http://tika.apache.org/0.8/api/org/apache/tika/parser/txt/CharsetDetector.html
乾杯,字符串(字節,「ISO-8859-1」)的魅力 –
@matkelcey:不客氣!我不得不說,看到一位能夠看到非Unicode輸入並且完全不知道它會是什麼的稱職程序員,我感到很高興。有一段時間不久之前,Unicode是例外而非規則。 – ruakh