浏览模式: 普通 | 列表
12月, 2019 | 1
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...

阅读全文…
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,例:
...

阅读全文…
1