距开课0天0时0分-9757325秒
phpcn_u412016-11-11 13:41:19 0 2 964
[PHP讨论组]源自课程章节:PHP 字符串变量举报回复话题 ↕
2
0
分享
数据分析师 2017-09-30 22:39:242楼
为什么在UTF-8下 strlen 把中文字符算成 3 个字节?中文不是2个字节?-PHP中文网问答-为什么在UTF-8下 strlen 把中文字符算成 3 个字节?中文不是2个字节?-PHP中文网问答
围观一下哦,学习一下。
赞 +0添加回复
阿神 2016-12-19 11:52:061楼
在UTF-8字符集中一个中文字 占2个字节的:0个 占3个字节的:基本等同于GBK,含21000多个汉字 占4个字节的:中日韩超大字符集里面的汉字,有5万多个
UTF-8是一种Unicode编码方式。他是一种不等幅的编码方式,UTF-8编码的字节长度取决于所要编码的字符在ISO 10646中的编码值。在UTF-8中,不同的字符,可能需要1-6个字节来进行编码。对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCII码)。对于多字节的UTF-8编码,如果编码包含n个字节,那么第一个字节的前n位为1,第一个字节的第n+1位为0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。
例如“未”字,其编码为:0xE69CAA,转换为二进制为:1110 0110 1001 1100 1010 1010,从这里可以看出,该字在UTF-8编码下本身就是3个字节。 所以,在UTF-8中,一个中文字并不是2个字节,而是超过了两个字节。并不是所有的中文字最后结尾都是0xAA。
赞 +1添加回复
数据分析师 2017-09-30 22:39:242楼
为什么在UTF-8下 strlen 把中文字符算成 3 个字节?中文不是2个字节?-PHP中文网问答-为什么在UTF-8下 strlen 把中文字符算成 3 个字节?中文不是2个字节?-PHP中文网问答
围观一下哦,学习一下。
赞 +0添加回复
阿神 2016-12-19 11:52:061楼
在UTF-8字符集中一个中文字
占2个字节的:0个
占3个字节的:基本等同于GBK,含21000多个汉字
占4个字节的:中日韩超大字符集里面的汉字,有5万多个
UTF-8是一种Unicode编码方式。他是一种不等幅的编码方式,UTF-8编码的字节长度取决于所要编码的字符在ISO 10646中的编码值。在UTF-8中,不同的字符,可能需要1-6个字节来进行编码。对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCII码)。对于多字节的UTF-8编码,如果编码包含n个字节,那么第一个字节的前n位为1,第一个字节的第n+1位为0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。
例如“未”字,其编码为:0xE69CAA,转换为二进制为:1110 0110 1001 1100 1010 1010,从这里可以看出,该字在UTF-8编码下本身就是3个字节。
所以,在UTF-8中,一个中文字并不是2个字节,而是超过了两个字节。并不是所有的中文字最后结尾都是0xAA。
赞 +1添加回复