参考文献:
1.www.cnblogs.com/chengmo/arc… 由编码识别遇到问题,思考utf8编码正则表达式(php版本)
2.en.wikipedia.org/wiki/UTF-8 utf-8英文维基
utf-8 、GBK 识别的最大问题在于
- utf-8 编码方式是变长方式编码,即 utf-8可能以1-4字节编码
- 以 1 字节编码的 是ASCII 及其拓展
- 以 2 字节编码的 是特殊字符【希伯来文等】
- 而中文在utf-8中以 3字节或4字节编码
GBK 中文编码采用双字节,单字节部分为ASCII及其拓展
在检测编码时
如果输入GBK 汉字 职,那么他的16进制编码为 D6B0,
而16进制编码为 D6B0 中在utf-8 中也有对应的字符,具体字符查表可知。
如果编码在utf-8 中 和 GBK 中同时存在,那么就无法判断当前的字符编码归属。使用 php 库函数 mb_detect_encoding 时,也不能够准确判断当前文字所使用的编码。