代码之家  ›  专栏  ›  技术社区  ›  Vendel Serke

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

  •  0
  • Vendel Serke  · 技术社区  · 7 年前

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

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

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

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

    1. 从源编码中的字节表示中获取字符
    2. 从目标编码中的字节表示中获取字符

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   Joop Eggen    7 年前

    你有字节,二进制数据,代表一些字符集中的文本。为此,你需要一个 . 知道字符集后,可以将其加载到java字符串(Unicode)中,并根据需要的任何字符集将其保存为字节。

    如果该目标字符集不能表示Unicode符号( 代码点 ),甚至可以确定如何处理。请参阅字符集解码器/字符集编码器。

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

    看见 What is the most accurate encoding detector?