我正在处理common crawl数据集(一个大型网络爬行),但我一直看到一种奇怪的编码方案,我无法解决。
我一遍又一遍地看到的模式是一些字节序列,如
现在,编码方案不是我的强项,但我不知道任何一种编码方式可以将
就像[UTF-16][1]一样,它将是
我一遍又一遍地看到的模式是一些字节序列,如
50 6f 6b e9 6d 6f 6e
,我猜这应该代表Pokémon
。现在,编码方案不是我的强项,但我不知道任何一种编码方式可以将
é
表示为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 Tika 提供的字符集编码检测器 [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