【发布时间】:2018-04-29 23:56:09
【问题描述】:
我面临以下情况:
我们从外部来源轮询一些 csv 数据。源的响应标头没有指定哪个是字符集,并且数据包含一些德语字符,这些字符在 rombus 中显示为问号(我知道这意味着该字符未在 UTF-8 中定义)。
我们希望对这些数据进行一些处理,然后将其转发,但为了解决这个问题,我们还希望将错误字符编码为正确的格式以正确显示它们。
我已经在这里阅读了一些答案,其中大多数建议使用“string.getBytes(“encoding”)”方法,然后使用其他编码创建一个新字符串。
但据我了解,我需要不同的东西,因为这种方法只是解码字符并处理相对于另一种编码的相同字节,并且某些字符在 utf-8 中以不同的字节长度表示,例如 ISO- 8859-1(我相信我们正在轮询的数据确实是编码的)这会导致结果字符串中出现奇怪的字符,所以这并不是我们真正想要实现的。
我需要一些可以的东西
- 从源编码中的字节表示中获取字符
- 从目标编码中的字节表示中获取字符
- 遍历解码后的字节数组并将所有字符字节表示替换为目标编码中的表示
在此之后,使用目标编码从字节数组创建一个新字符串是安全的。 那么,如果有人知道可以做到这一点的好图书馆吗?如果它已经存在,我不想自己实现它。
【问题讨论】:
-
小心您阅读的内容。这里的大多数答案都给了你绝对垃圾的建议,因为编写它们的人不了解字符编码是如何工作的(他们认为他们很不幸地这样做了)。您的主要问题是识别编码,其他一切都是小菜一碟。然而,识别编码并不一定容易,至少在您有很多不同选择的情况下是这样。
-
也许这可以帮助你(是的,我不知道编码...)jchardet.sourceforge.net
标签: java encoding utf-8 character-encoding iso-8859-1