21

このコード

print mb_substr('éxxx', 0, 1);

空のスペースを出力します:(

最初の文字を印刷することになっていますé。ただし、これは機能するようです。

print mb_substr('éxxx', 0, 2);

しかし、それは正しくありません。(0、2)は2文字を意味するからです...

4

2 に答える 2

48

次のように、エンコーディングパラメータをmb_substrに渡してみてください。

print mb_substr('éxxx', 0, 1, 'utf-8');

エンコーディングが自動的に検出されることはありません。

于 2012-12-19T13:17:53.677 に答える
13

実際には、一部のシステムでは、マルチバイト関数の内部エンコーディングがデフォルトでISO-8859-1になっていることがわかりました。これにより、マルチバイトテキストを処理する能力が事実上損なわれます。

適切なデフォルトを設定すると、おそらくこれと他のいくつかの問題が修正されます。

mb_internal_encoding('UTF-8');
于 2012-12-19T13:23:12.853 に答える