4

私は試した:

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

どちらも 9 を出力しますが、実際には 3 文字しかありません。

文字数の正しい数え方は?

4

3 に答える 3

7

2 番目のパラメーターでエンコーディングを必ず指定する必要があります。

すなわち

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

マニュアルを見る

于 2009-09-17T03:19:02.683 に答える
1

mb 文字列拡張機能にアクセスできない場合は、これも機能します (そして、より高速であると思います)。

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

1 つの漢字は 1 つの ASCII 文字に等しくありません。文字列が UTF-8 でエンコードされている場合、mb_strlen はマルチバイト文字をカウントする正しい方法です。

ここを参照してください: http://www.herongyang.com/PHP-Chinese/Multibyte-UTF-8-mb_strlen.html

于 2009-09-17T03:23:49.743 に答える