4

私は次のコードを持っています:

function testAccents() {
    $str = "àéè";
    $html = htmlentities($str);
    echo $html;
}

àéè実行すると、 getの代わりにàéè.

エンコーディングの問題かもしれないと思いましたが、ファイルは utf-8 です:

> file -bi PublicationTest.php 
  text/x-c++; charset=utf-8

この奇妙な結果が得られるのはなぜですか?

編集: PHP 5.3 を使用します。

4

1 に答える 1

15

PHP 5.4.0 より前でhtmlentities()は、デフォルトで ISO-8859-1 データが必要です。UTF-8 入力をシングルバイト文字として解釈しているため、おかしな結果が得られます。

エンコードを具体的に指定します。

$html = htmlentities($str, ENT_COMPAT, "UTF-8");
于 2012-11-06T08:15:06.777 に答える