java自动识别文本文件字符编码

编程时,正确识别文本文件的字符编码至关重要,避免乱码问题。本文介绍了一个Java小工具,能有效识别UTF-8(含BOM和无BOM)与GBK编码。通过分析ASCII码和特定字符编码特征进行判断。源代码可在指定链接找到,若遇到识别异常,可联系作者。
摘要由CSDN通过智能技术生成

编程开发中,免不了要读取磁盘中的文本文件,目前文本文件最常用的是使用“utf-8”及“gbk”字符编码,如果使用了错误的字符编码格式,就会发生乱码的问题,因而在读取前,需要约定好要读取的文本文件内容与工程代码字符编码的统一。如果程序能够自动在读取文件时,能够识别其字符编码,固然就happy了。

这是我目前写的小工具,目前测试能够很好的识别读取的文本文件是“utf-8”还是“gbk”,原理是这2种字符编码的英文字母及标点字符都是ASCII码,“utf-8”分有bom头与无bom头的情况,“utf-8”的中文字符的16进制编码基本是以“E”开头,那么,就根据这些特征进行猜测,代码如下:

 

package top.hmtools.base;

import java.math.BigInteger;

import top.hmtools.system.SystemInfoTools;

/**
 * 猜测字符编码工具
 * @author HyboJ
 *
 */
public class CharsetGuessTools {

	/**
	 * 根据字节码数组,猜测编码类型
	 * <br>依据:如果文本头有bom信息则可知其对应的字符编码。
	 *  <br>此外,GBK与UTF-8都有可能,二者都可以没有bom信息。经观察发现,ASCII对应的字符是二者一致的部分,
	 *  <br>经尝试多个中文字符,发现在UTF-8中的编码在以16进制字符串表示时,基本上是以“E”开头,而GBK则不是。
	 * <br>准确性还有待验证,如果猜测不准确,请联系作者:<a href=&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值