【发布时间】:2012-01-07 03:16:18
【问题描述】:
我正在对 common crawl 数据集(大型网络爬虫)做一些工作,但我一直看到一个奇怪的编码模式,我只是不知道如何处理。
我一次又一次看到的模式类似于字节序列50 6f 6b <strong>e9</strong> 6d 6f 6e,我猜它是为了代表Pokémon。
现在编码模式不是我的强项,但我不知道任何可以将é 表示为e9 的有效编码。
有点像 [UTF-16][1],即 fe ff 00 50 00 6f 00 6b <strong>00 e9</strong> 00 6d 00 6f 00 6e
而且绝对不是 UTF-8,而是 50 6f 6b <strong>c3 a9</strong> 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
【问题讨论】:
标签: java string utf-8 character-encoding