背景产品经理要求上传一个文件到服务器,但是文件没有模板,文件的编码格式不确定,所以无法通过指定的方式解析文件编码格式,否则会出现乱码。文件编码识别(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坐标如下:
