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

新闻 开发工具
产品经理要求上传文件到服务器,但是文件没有模板,文件的编码格式不定,因此不能通过指定的编码格式解析文件,否则会出现乱码。

背景

产品经理要求上传文件到服务器,但是文件没有模板,文件的编码格式不定,因此不能通过指定的编码格式解析文件,否则会出现乱码。

文件编码识别

(1)UTF-8 BOM编码的文件,前3个字节转换成10进制数后分别是:-17、-69、-65。

(2)UTF-16BE BOM编码的文件,前2个字节转换成10进制数后分别是:-2、-1。

(3)UTF-16LE BOM编码的文件,前2个字节转换成10进制数后分别是:-1、-2。

因此,这三种编码格式的文件检测起来比较简单,只需要拿到文件的前三个字节,然后根据上面的规则就可以确定文件是什么编码。问题是这种检测方式只能区分UTF-8 BOM、UTF-16BE BOM和UTF-16LE BOM编码的文件,不能区分UTF-8和GBK编码的文件。

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

Google字符编码检测工具

需要引入Maven依赖,Maven坐标如下:

  1. <dependency> 
  2.     <groupId> 
  3.         com.googlecode.juniversalchardet    </groupId> 
  4.     <artifactId>juniversalchardet</artifactId> 
  5.     <version>1.0.3</version> 
  6. </dependency> 

Google字符编码检测工具Java代码示例,目前来看检查UTF-8和GBK编码没有问题,但是其它编码存在问题,由于上传的文件只有中文和英文,因此稍微做了点兼容性处理,当编码获取错误时,默认取GBK编码。编码检测工具在生产环境运行了一段时间,目前来看没发现什么问题。

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

总结

由于上传的文件只有中文和英文,在生产环境运行了一段时间,目前来看是满足要求的。比如Google的字符编码检测工具会返回WINDOWS-1252这样的编码格式,这种默认用GBK编码就可以。还有一些检测不出来的编码格式,返回null,这种也用默认的GBK就行。

 

责任编辑:张燕妮 来源: 今日头条
相关推荐

2014-04-15 17:03:00

2010-06-04 09:59:37

Linux 性能检测

2014-06-06 10:01:31

2015-10-30 14:33:44

2022-03-25 14:11:11

Java死锁线程

2021-06-28 10:40:33

WhyNotWin11开源Windows 11

2021-10-19 15:01:26

API检测工具网络安全

2018-11-01 08:40:48

入侵检测系统IDS网络安全

2021-12-13 16:16:42

Java开发工具

2015-03-13 09:10:29

2021-04-14 08:20:46

Lighthouse工具性能检测

2010-06-04 10:30:15

Linux 性能检测

2011-01-11 13:58:32

WebLog ExpeWEB服务器流量记录

2010-06-04 10:09:29

Linux 性能检测

2023-05-12 13:20:07

ChatGPTAIGC检测工具

2021-10-22 09:40:59

开源技术 工具

2021-07-01 05:17:52

Windows 11操作系统微软

2015-09-28 18:05:52

安全审计入侵检测Tiger–UNIX

2015-10-30 14:46:50

2009-06-03 14:15:34

点赞
收藏

51CTO技术栈公众号