文本格式的检测

一个文本文件,特别是html文件,编码的字符集可能是utf8,unicode,gb2112等。一个文本编辑器或者浏览器总能猜对其编码方式,而不显示乱码。其背后的原理是什么?

参考http://archives.miloush.net/michkap/archive/2007/04/22/2239345.html

https://docs.microsoft.com/zh-cn/windows/desktop/api/winbase/nf-winbase-istextunicode

首先BOM是文本中开头几个字符,这是个对文本编辑程序的提示。例如:FF FE表示UNICODE LE编码。

对于没有BOM的,如何判断?windows有个IsTextUnicode函数,根据“统计学和算法”这种高大上的方法猜。

如果是uft8-no-BOM,可以按照uft编码的固定规律,就是字节的高位总是1xxxxxxx,11xxxxxx这样规律的重复模式。

剩下的不符合上述国际标准的,就用本地系统ANSI编码(例如:中文国标GB2312)去尝试解码了。

通过这个思路,对于浏览器总能猜对html的编码方式就不会惊奇了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值