您的位置:首页 > 数据库 > MySQL

Mysql varchar 数字计算方法 - 个数计算?2字节?3字节?4字节?编码格式决定一切啊!

2015-01-28 11:58 369 查看
http://my.oschina.net/cart/blog/372633

Mysql varchar的数字计算方法

SELECT char_length('中文');
SELECT length('中文');


个数计算?字节计算?

2字节?3字节?4字节?编码格式决定一切啊!

简单的事情为什么那么复杂?装逼写算法计算数目搞得高大上?其实很简单,只是你不懂原理!

同样1个字符,可以演变出1个字节、2个字节、3个字节、4个字节,试问,你不变的算法如何正确针对可变的编码?


Mysql varchar 1个字符在不同编码下的字节数目是不同的









Mysql varchar的数字意义是:任何编码下都是按照个数计算的





Mysql varchar 到底是字节还是个数?

varchar(10),char(10)

可以肯定的是,最多包含10个字符(东西)

具体是多少字节,要看字符类型和编码规则而定!

如何解决varchar字符数目长度判断或者限制?

根据上面的,我们可以从计算个数的理论上来限制即可!

a-z,A-Z,0-9,半角标点符号 都是1个(这个大家都知道)

汉字、全角字符、法语、Emoji表情符号。。。等一切都视为1个(聪明的同学已经知道解决方法了)

最终答案:

if(mb_strlen($name, 'UTF-8') > 10){
exit('超过数据库最大长度varchar(10)');
}


var_dump(mb_strlen('a', 'UTF-8'));//1个
var_dump(mb_strlen('A', 'UTF-8'));//1个
var_dump(mb_strlen('8', 'UTF-8'));//1个
var_dump(mb_strlen('我', 'UTF-8'));//1个


Emoji表情符号大全,Emoji官网,4字节字符符号表情测试

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐