mysql中字符宽度与字节的关系理解

来源:互联网 发布:popper.js是什么 编辑:程序博客网 时间:2024/06/05 02:25

mysql字符与字节的关系(适用于varchar、char、text)

utf-8字符集下,MySQL中,如果设置varchar(2),插入时,汉字可以插入2个,一个汉字占3个字节,字母可以插入2个,一个字母占一个字节,utf-8编码下存储一个字符采取的是1~3个字节;

形象的说就是这样的,现在有一个叫varchar的盒子,我们定义有2个格子(mysql中宽度的概念),它能装2个东西,在utf-8的编码下,一个格子是可以存1~3个字节,现在有一个叫字母(ht)和一个叫汉字(测试)的家伙,都想放进了格子,这时候只能放下一个也么放两个字节的字母,要么放6个字节的汉字。不管谁放进去格子数都是2,存储字节数是变化的,2个字母就是两个字节,2个汉字就是6个字节
注:这里的varchar(2)中2在mysql4以后定义为字符宽度,之前版本为字节数

扩展:mysql与oracle中varchar与varchar2区别

mysql中varchar(6)代表可以存放6个汉字,6个字母,或6个数字。
oracle中varchar2(6)代表可以中存放6个字节。即oracle中varchar2的长度代表字节数而不是字符数。
mysql中一个汉字占三个字节,Oracle中一个汉字占两个字节。

0 0