3

関数を使用して分音記号でユニコード文字列をスライスしてmb_substrいますが、単純なsubstr関数を使用するのと同じように機能します。Unicode 文字を半分に分割し、疑問符のひし形を表示します。

例えば

echo mb_substr('ááááá', 0, 5); //Displays áá�

何が間違っている可能性がありますか?

4

2 に答える 2

7

の最後のパラメータとしてエンコーディングを指定しないと、同じ問題が発生します。mb_substr少なくとも私のサーバーでは、デフォルトでISO-8859-1.


しかし、エンコーディングを適切に設定するとUTF-8、問題なく動作します:

echo mb_substr('ááááá', 0, 5, 'UTF-8');

ブラウザで正しい表示を取得します:

ááááá


(引用、強調鉱山)を 参照してください:mb_substr

string mb_substr  ( string $str  , int $start  [, 
    int $length  [, string $encoding  ]] )

パラメータはencoding文字エンコーディングです。省略した場合は、内部の文字エンコーディング値が使用されます。

于 2010-01-15T12:00:58.647 に答える
1

私は同じ問題を抱えていましたが、上記の回答も役に立ちました。を設定php.iniまたは使用する以外に、マルチバイト関数の永続的なエンコーディングを設定するために(を選択して置き換えることができます)ini_set()を使用することも役立つ場合があります。mb_internal_encoding('utf-8');utf-8

于 2012-09-27T22:01:31.173 に答える