当前位置:Gxlcms > 数据库问题 > mysql 字符集

mysql 字符集

时间:2021-07-01 10:21:17 帮助过:38人阅读

 

gbk 字符集测试

建表: 根据gbk编码一个汉字占用2个字节,一行最多有65535个字节和上边测试的为空时多占一个字节。可以计算出varchar(N)  N在 varchar在为空和非空的值

为空 (65535-2-1)/2 = 32766个汉字     非空 (65535-2)/2=32766.5 也就是非空状态下可以多建一个tinyint类型

varchar为空建表

技术分享

varchar 非空建表

技术分享

注释: 在建表时如果varchar超过规定字节数时会默认转换字符类型

技术分享

插入数据后查看插入数据量

技术分享

查看数据占用的字节

插入前表

技术分享

插入后

技术分享

结论: 在gbk字符中varchar(N) ,N<=23766个汉字 。如果N 大于32766 mysql 会默认的转换字符类型。 gdk中能存32766个汉字或者数字字母。

 

latin1 字符集 测试

1character=1byte, 1汉字=2character,

建表   因为在latin1 中一个字节=1个字符 ,建表时varchar(N) N 在varchar不为空的时 N=65533 为空时N=65532

 

技术分享

分别插入字母和汉字查看插入数据结果

技术分享

可以看到插入的字符和汉字情况 通过计算插入汉字65523 ,插入汉字(65523-1)/2  个汉字。

显示汉字长度不正确原因

在插入汉字是如果汉字大于varchar(n) 中(N-1)/2 的值 ,N为 是奇数 。插入的值为:汉字个数+1空字符     汉字个数=(N-1)/2

 

结论 :  latin1 中varchar(N) N 最多能插入65523 个字母或数字,能插入N/2 个汉字 


mysql 字符集

标签:mysql字符集研究

人气教程排行