3

タイ語の文字と PHP を連携させるのに苦労しています。これは私がやりたいことです:

<?php
   mb_internal_encoding('UTF-8');
   $string = "ทาง";
   echo $string[0];
?>

しかし、$string (ท) の最初の文字を与える代わりに、めちゃくちゃな出力が得られます。ただし、 $string 自体の表示は正常に機能します。

もちろんファイル自体もUTF-8です。ヘッダーの Content-Type も UTF-8 に設定されています。このサイトに従って、php.ini の必要な行を変更しました。

utf8_encoding() と utf8_decoding() も役に立ちません。たぶん、あなたの誰かがアイデアを持っていますか?

4

1 に答える 1

4

PHP で文字列にアクセスすると$string[0]、最初の文字ではなく最初のバイトが返されます。

代わりにmb_substrを使用してください。例えば:

mb_substr($string, 0, 1, 'UTF-8');

:使用しているためmb_internal_encoding('UTF-8');、最後のパラメーターを無視してもかまいません。


これは、PHP が文字列のエンコーディングを認識していない (つまり、エンコーディングが文字列オブジェクトに格納されていない) ために発生します。したがって、デフォルトでは ANSI/ASCII として扱われます。それを望まない場合は、マルチバイト文字列関数(mb_*) を使用する必要があります。

設定すると、すべてのマルチバイト文字列関数mb_internal_encoding('UTF-8');に使用するように指示されますが、それ以外には使用UTF-8されません。

于 2013-12-08T13:12:51.990 に答える