文本格式的检测

一个文本文件,特别是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的编码方式就不会惊奇了。

你可能感兴趣的:(就你不知道)