从数据错误地保存为UTF-8重建Windows-1252字符

时间:2011-12-23 08:38:13

标签: unicode utf-8 character-encoding windows-1252

我正在处理使用Java HtmlUnit采样的数据。该网页使用了Windows-1252编码,但检索到的响应就像页面被编码为UTF-8一样(即,当调用HtmlUnit WebResponse对象上的getContentAsString时,指定了UTF-8编码而不是推迟到服务器中指定的编码响应)。有没有办法扭转这个过程,从错误标记的UTF-8字符数据重建原始的Windows-1252数据?

关于此主题的大多数其他问题涉及识别文件类型或从一种流类型转换为另一种正确编码的字符。这里情况不同。我不相信像iconv这样的实用程序会起作用,因为他们希望这些流在源代码编码中始终正确保存。

1 个答案:

答案 0 :(得分:3)

可能不是。如果Windows-1252编码的文本被误认为是UTF-8,则由于UTF-8处理这些代码点的方式,所有非ASCII代码点都将被损坏。只有你非常幸运,并且所有非ASCII代码点成对或三元组,通过纯粹的机会,转换为真正的Unicode代码点,你可以逆转这个过程。

但你很幸运。