有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于在不同编码之间转换字符的Java库

我面临以下情况:

我们从外部来源轮询一些csv数据。源的响应头没有指定哪个是字符集,数据中包含一些德语字符,这些字符在ROM总线中显示为问号(我知道这意味着UTF-8中没有定义该字符)

我们想对这些数据做一些处理,然后转发它,但为了解决这个问题,我们还想将错误的字符编码为正确的格式,以便正确地显示它们

我已经阅读了这里的一些答案,其中大多数建议使用“string.getBytes(“encoding”)”方法,然后使用其他编码从中创建一个新字符串

但据我所知,我需要一个不同的东西,因为这个方法只是对字符进行解码,并根据另一种编码处理相同的字节,有些字符在utf-8中用不同的字节长度表示,比如ISO-8859-1(我相信我们正在轮询的数据是真正编码的),这会导致结果字符串中出现奇怪的字符,所以这并不是我们想要实现的

我需要一些可以

  1. 从源编码中的字节表示中获取字符
  2. 从目标编码中的字节表示中获取字符
  3. 迭代解码的字节数组,并用目标编码的表示替换所有字符字节表示

在此之后,可以安全地使用目标编码从字节数组创建一个新字符串。 那么,如果有人知道一个好的图书馆可以做到这一点?如果它已经存在,我不想自己实现它


共 (1) 个答案

  1. # 1 楼答案

    你有字节,二进制数据,代表某些字符集中的文本。为此,需要进行字符集检测。了解字符集后,可以将其加载到java字符串(Unicode)中,并根据需要的任何字符集将其保存为字节

    如果目标字符集不能表示Unicode符号(代码点),那么甚至可以确定如何处理它。参见CharsetDecoder/CharsetEncoder

    对于字符集检测,存在一些库。我为部分字符集写了自己的;语言。与语言检测结合使用效果最佳。比如捷克

    What is the most accurate encoding detector?