【问题标题】:How to detect which character set encoding in Java?如何检测Java中的字符集编码?
【发布时间】:2010-02-12 00:03:51
【问题描述】:

有人知道是否有一种简单的方法可以检测 Java 中的字符集编码吗?在我看来,有些程序能够检测给定数据使用的字符集,或者至少做出近似值。

我认为底层机制必须对每个字符集中的数据进行解码,然后选择具有最少未定义字符的字符集,然后选择更常见的字符集以打破平局。

有什么想法吗?

【问题讨论】:

标签: java character-encoding


【解决方案1】:

看看jchardet,这是一个从 Mozilla 浏览器移植的库,专门用于“猜测”文档的字符集。

作为替代方案,cpdetector 库有点新,专门用于检测文档的代码页。

【讨论】:

    【解决方案2】:

    要查找数据是否为任何 unicode 格式(UTF-8、UTF-16... 等),您可以读取字节流中的数据并检查前 4 个字节(BOM 大小),对于每种编码,它将与众不同

    例如:

    对于 UTF-8,前 3 个字节将为 EF、BB、BF

    对于 unicode 编码以外的编码我不确定...

    【讨论】:

    • 可选的 UTF-8 BOM 只有在存在时才有用:en.wikipedia.org/wiki/Byte_order_mark
    • @sreejith.. 上面的 BOM 解决方案只能用于判断文件不是 UTF-8(在这种情况下,它不会以给定的 BOM 开头)。但如果 BOM 存在,它可以是 UTF-8 也可以不是。例如也许对于其他一些文件,初始字节“EF,BB,BF”实际上是有效数据。!
    猜你喜欢
    • 2012-04-13
    • 2012-02-29
    • 1970-01-01
    • 2012-11-09
    • 2014-01-26
    • 2013-04-01
    • 2013-11-10
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多