如何检测Java中的字符集编码?

ben*_*rre 7 java character-encoding

有人知道是否有一种简单的方法来检测Java中的字符集编码?在我看来,某些程序能够检测给定数据使用哪个字符集,或至少进行近似.

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

有任何想法吗?

sre*_*ith -3

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

例如:

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

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

  • 可选的 UTF-8 BOM 仅在存在时才有用:http://en.wikipedia.org/wiki/Byte_order_mark (4认同)