当前位置: 首页 > 科技观察

谷歌开源Java字符编码检测工具介绍

时间:2023-03-21 16:07:48 科技观察

背景产品经理要求上传一个文件到服务器,但是文件没有模板,文件的编码格式不确定,所以无法通过指定的方式解析文件编码格式,否则会出现乱码。文件编码识别(1)对于UTF-8BOM编码的文件,前3个字节转换为十进制数:-17、-69、-65。(2)对于UTF-16BEBOM编码的文件,前两个字节转换成十进制数:-2、-1。(3)对于UTF-16LEBOM编码的文件,前两个字节转换为十进制数:-1、-2。因此,检测这三种编码格式的文件都比较简单。只需要得到文件的前三个字节,就可以根据上面的规则确定文件的编码方式。问题是这种检测方法只能区分UTF-8BOM、UTF-16BEBOM和UTF-16LEBOM编码的文件,不能区分UTF-8和GBK编码的文件。Google字符编码检测工具需要引入Maven依赖。Maven坐标如下:com.googlecode.junniversalchardetjunniversalchardet1.0.3谷歌字符编码检测工具Java代码例子。目前查UTF-8和GBK编码没有问题,其他编码有问题。由于上传的文件只有中文和英文,所以做了一点兼容性处理。当获取编码出错时,默认使用GBK编码。编码检测工具已经在生产环境运行了一段时间,目前没有发现任何问题。总结由于上传的文件只有中英文版本,在生产环境运行了一段时间,目前满足要求。比如谷歌的字符编码检测工具会返回一个编码格式如WINDOWS-1252,默认可以用GBK编码。还有一些编码格式检测不到,返回null。这种编码格式也可以使用默认的GBK。