4

我试过:

mb_strlen('普通话');
strlen('普通话');

他们都输出9,而实际上只有3个字符。

计算字符的正确方法是什么?

4

3 回答 3

7

您应该确保在第二个参数中指定编码

IE

mb_strlen('普通话', 'UTF-8');

手册

于 2009-09-17T03:19:02.683 回答
1

如果您无权访问 mb 字符串扩展名,这也可以使用(而且我相信它会更快):

strlen(utf8_decode('普通话')); // 3
于 2009-09-17T14:36:24.993 回答
0

一个汉字不等于一个ASCII字符。如果字符串以 UTF-8 编码,mb_strlen 是计算多字节字符的正确方法。

看这里: http ://www.herongyang.com/PHP-Chinese/Multibyte-UTF-8-mb_strlen.html

于 2009-09-17T03:23:49.743 回答