関数を使用して分音記号でユニコード文字列をスライスしてmb_substr
いますが、単純なsubstr
関数を使用するのと同じように機能します。Unicode 文字を半分に分割し、疑問符のひし形を表示します。
例えば
echo mb_substr('ááááá', 0, 5); //Displays áá�
何が間違っている可能性がありますか?
の最後のパラメータとしてエンコーディングを指定しないと、同じ問題が発生します。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
文字エンコーディングです。省略した場合は、内部の文字エンコーディング値が使用されます。
私は同じ問題を抱えていましたが、上記の回答も役に立ちました。を設定php.ini
または使用する以外に、マルチバイト関数の永続的なエンコーディングを設定するために(を選択して置き換えることができます)ini_set()
を使用することも役立つ場合があります。mb_internal_encoding('utf-8');
utf-8