Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测Java中的哪个字符集编码?_Java_Character Encoding - Fatal编程技术网

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

如何检测Java中的哪个字符集编码?,java,character-encoding,Java,Character Encoding,有人知道Java中是否有一种检测字符集编码的简单方法吗?在我看来,有些程序能够检测给定数据段使用的字符集,或者至少能够进行近似 我认为底层机制必须对每个字符集中的数据进行解码,并选择未定义字符最少的字符,然后选择哪个字符集更常见,以打破平局 有什么想法吗?要查找数据是否为任何unicode格式(UTF-8、UTF-16…等),您可以读取字节流中的数据,并检查前4个字节(BOM大小),对于每个编码,它将是不同的 例如: 对于UTF-8,前3个字节将是EF、BB、BF 对于unicode编码以外的其

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

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


有什么想法吗?

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

例如:

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

对于unicode编码以外的其他编码,我不确定……

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


另一种选择是,新一点的库专门检测文档的代码页。

我们讨论的是什么输入?字节数组(二进制)还是字符数组(字符串)?那么你想区分哪些呢?也就是说,它只能用于Unicode字符集(带有字节顺序标记),而不能用于其他字符集的可靠性。在这个网站上,pfarland正在使用一些启发式方法:相关主题:可选的UTF-8 BOM只有在存在时才有用:@sreejith。。上面的BOM解决方案只能用于说明文件不是UTF-8(在这种情况下,它不会以给定的BOM开始)。但是,如果存在BOM,它可以是UTF-8,也可以不是。例如,对于某些其他文件,初始字节“EF,BB,BF”实际上是有效数据。!