我试过了:

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

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

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

有帮助吗?

解决方案

你应该确保在第二个参数

中指定编码

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

请参阅手册

其他提示

如果您无法访问mb字符串扩展名,这也有效(我相信它更快):

strlen(utf8_decode('普通话')); // 3

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

见这里: http://www.herongyang.com/PHP-Chinese/多字节UTF-8-mb_strlen.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top