java - 在 Java 中处理错误编码的 UTF-16 (?)

标签 java string utf-8 character-encoding

我正在做一些关于 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

最佳答案

要么是ISO-8859-1Windows-1252 ,后者本质上是前者的超集。使用 new String(bytes, "ISO-8859-1")new String(bytes, "Windows-1252")

关于java - 在 Java 中处理错误编码的 UTF-16 (?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8282700/

相关文章:

string - Lua 字符串替换

c++ - 删除字符串时堆损坏

PHP JSON_Encode() 使用 UTF-8 返回 NULL(数组中的数组)

python-2.7 - Python 2.7,将 utf8 字符串转换为 ascii

Java - 捕获异步方法的异常

java - JTable 添加行不适用于 actionListener

c++ - 谁能检查这个 Palindrome c++ 代码是否正确?

java - ThreadMXBean.getThreadCpuTime() 是否包括在所有状态下花费的时间,或仅包括 RUNNABLE?

java - java 和 .net 之间的 WS-A

python - Windows 文件名在 Linux 中显示损坏的字符