>백엔드 개발 >PHP 튜토리얼 >echo strlen('你好'); 显示的是6为什么是6(按理说应该是4)呢?

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

WBOY
WBOY원래의
2016-06-06 20:42:131291검색

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

回复内容:

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

编码集不同,如果是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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.