MySQL字符集问题

数据库字符集问题,是面试过程中经常被问到的,注意面试官给你挖坑的时候,不要往里面跳。

MySql 5.5 之前,UTF8 编码只支持1-3个字节,只支持BMP这部分的unicode编码区,BMP是从哪到哪?
基本就是 0000 ~ FFFF 这一区。

从MySQL 5.5 开始,可支持4个字节UTF编码utf8mb4,一个字符最多能有4字节,所以能支持更多的字符集。


utf8mb4 is a superset of utf8

utf8mb4 兼容utf8,且比utf8能表示更多的字符。

至于什么时候用,看你做的什么项目了。。。
在做移动应用时,会遇到IOS用户在文本的区域输入emoji表情,如果不做一定处理,就会导致插入数据库异常。

 

MySql 5.0 以上的版本:

1、一个汉字占多少长度与编码有关:

UTF-8:一个汉字 = 3个字节,英文是一个字节
GBK: 一个汉字 = 2个字节,英文是一个字节

UTF-8对中文采用3个字节,对英文采用1个字节;GBK对中文采用2个字节,对英文采用1个字节; 


2、varchar(n) 表示n个字符,无论汉字和英文,MySql都能存入 n 个字符,仅实际字节长度有所区别。

utf8: 
1character=3bytes, 1汉字=1character 
也就是说一个字段定义成 varchar(200),则它可以存储200个汉字或者200个字母。 
gbk: 
1character=2bytes,1汉字=1character 
也就是说一个字段定义成 varchar(200),则它可以存储200个汉字或者200个字母。

varchar(N),  这里的N是指字符数,并不是字节数.占用的字节数与编码有关

3、MySQL检查长度,可用SQL语言 SELECT LENGTH(fieldname) FROM tablename 这个命令可以看到各行使用的字节数。

SQL语句:select length(字段名) from 表名; 
总结:MySQL中,(varchar 30 ,varchar是几就可以存几个文符) 


 


版权声明:本文为zch2011zch原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。