扫码关注官方订阅号
php中的mb_detect_encoding可以根据输入的字符串判断它到底属于哪种编码,这种判断是如何进行的,utf-8和asc的宽度都不一样,而且前者还是变长的,它如何判断多出来的那个字节到底是属于下一个字的还是这个字最后一个字节
mb_detect_encoding
走同样的路,发现不同的人生
与其说utf-8跟 ascii区别,不如说如何判断 ascii和非asciiascii最大是127,判断时,只要这个字节大于127,也就是7f,就可以认定是这个字节属于多字节编码。不论是GBK还是UTF-8 都是兼容ascii。 1. utf-8 每个字的第一个字节,有表示这个字总共有多少个字节。所有变长的数据类型基本是这么实现的, 比如数据库的varchar也是有多出来的字节保存长度,就不会误读。 2. GBK是等宽双字节的,只要这个字节不是ascii字符,就把它和下一个读在一起就OK 了 3. 至于如何猜测 utf-8和gbk,我也不了解。猜测应该是通过一些算法,去匹配编码规律或码表吧,关于这个可以参考:http://blog.csdn.net/ecjtuync/article/details/1774429
utf-8
ascii
127
7f
GBK
UTF-8
varchar
gbk
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
与其说
utf-8跟ascii区别,不如说如何判断ascii和非asciiascii最大是127,判断时,只要这个字节大于127,也就是7f,就可以认定是这个字节属于多字节编码。不论是GBK还是UTF-8都是兼容ascii。1.
utf-8每个字的第一个字节,有表示这个字总共有多少个字节。所有变长的数据类型基本是这么实现的, 比如数据库的varchar也是有多出来的字节保存长度,就不会误读。2.
GBK是等宽双字节的,只要这个字节不是ascii字符,就把它和下一个读在一起就OK 了3. 至于如何猜测
utf-8和gbk,我也不了解。猜测应该是通过一些算法,去匹配编码规律或码表吧,关于这个可以参考:http://blog.csdn.net/ecjtuync/article/details/1774429