我面临以下情况:
我们从外部来源调查一些csv数据。源的响应头没有指定哪个是字符集,并且数据包含一些德语字符,这些字符在rombus中显示为问号(我知道这意味着该字符未在UTF-8中定义)。
我们希望对这些数据做一些工作,然后转发它,但为了解决这个问题,我们还要将错误的字符编码为正确的格式,以便正确显示它们。
我已经在这里阅读了一些答案,其中大多数建议使用“string.getBytes(”encoding“)”方法,然后使用其他编码创建一个新的字符串。
但是根据我的理解,我需要一个不同的东西,因为这个方法只是解码字符并处理相对于另一个编码的相同字节,并且一些字符在utf-8中用不同的字节长度表示,而不是例如ISO- 8859-1(我相信我们正在轮询的数据是真正编码的)会导致结果字符串中出现奇怪的字符,所以它不是我们想要实现的。
我需要一些可以
的东西在此之后,使用目标编码从字节数组创建新字符串是安全的。 所以,如果有人知道一个好的图书馆可以做到这一点?如果它已经存在,我不想自己实现它。
答案 0 :(得分:0)
您有字节,二进制数据,表示某些字符集中的文本。为此,您需要字符集检测。知道Charset,你可以用java String(Unicode)加载它,并将它保存为给定任何Charset所需的字节。
如果该目标Charset不能代表Unicode符号(代码点),那么人们甚至可以确定如何处理它。参见CharsetDecoder / CharsetEncoder。
对于Charset检测,存在一些库。我为部分字符集编写了自己的字符集&语言。它与语言检测结合使用效果最佳。例如捷克语。