Home >Backend Development >PHP Tutorial >echo strlen('你好'); 显示的是6为什么是6(按理说应该是4)呢?

echo strlen('你好'); 显示的是6为什么是6(按理说应该是4)呢?

WBOY
WBOYOriginal
2016-06-06 20:42:131279browse

不是说一个汉字相当于两个字符吗?

回复内容:

不是说一个汉字相当于两个字符吗?

编码集不同,如果是unicode较为常见的那种编码,那么一个汉子占用两个字节。
如果是UTF8,那么占用字节数是不定的,有可能是三个,最多是6个。
http://blog.csdn.net/lazyclough/article/details/7691911

要看是什么编码啊。
例如UTF-8: 8bit变长编码,对于大多数常用字符集(ASCII中0~127字符)它只使用单字节,而对其它常用字符(特别是朝鲜和汉语会意文字),它使用3字节。

问之前请先搜索。一个汉字相当于两个英文字符是说字的显示占位,跟计算出来的"长度"可没什么关系。http://developer.51cto.com/art/201105/263103.htm 这个上面已经说的很明白啦,UTF-8下面一个汉字是占3个字节的。

gbk编码下面一个汉字占两个字节。
utf-8下面三个,utf-16下面两个,utf-32下面四个。

要是想计算有几个字而不是字节,用mb_strlen

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn