mysql中 VARCHAR(N)类型,GBK编码,utf8编码,则N最大值,字符串长度问题
[ 2019-12-12 10:37:30 | 作者: admin ]
p.s. 在mysql5中,varchar(20)就表示可以放20个字(数字英文或汉字),无论编码是UTF8,GBK,都可以放20个。mysql会自动分配存储字节空间
如果是汉字,GBK编码下1汉字=2byte, varchar(20)会占用40字节,UTF8编码1汉字=3byte, varchar(20)会占用60字节,UTF8mb4编码1汉字=4byte, varchar(20)会占用80字节
有道面试题:若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少?
先明白计算的一些规则限制
mysql 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
mysql 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是U...
阅读全文…
如果是汉字,GBK编码下1汉字=2byte, varchar(20)会占用40字节,UTF8编码1汉字=3byte, varchar(20)会占用60字节,UTF8mb4编码1汉字=4byte, varchar(20)会占用80字节
有道面试题:若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少?
先明白计算的一些规则限制
mysql 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
mysql 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是U...
阅读全文…
mysql 字符串长度计算实现代码(gb2312+utf8)
[ 2019-12-12 09:55:28 | 作者: admin ]
PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:
PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节。例:
$enStr = 'Hello,China!';
echo strlen($enStr); // 输出:12
而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。
gbk编码下每个中文字符所占字节为2,例:
$zhStr = '您好,中国!';
echo strlen($zhStr); // 输出:12
utf-8编码下每个中文字符所占字节为3,例:
...
阅读全文…
PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节。例:
$enStr = 'Hello,China!';
echo strlen($enStr); // 输出:12
而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。
gbk编码下每个中文字符所占字节为2,例:
$zhStr = '您好,中国!';
echo strlen($zhStr); // 输出:12
utf-8编码下每个中文字符所占字节为3,例:
...
阅读全文…
1