4

我有以下代码:

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

当我运行它时,àéè我得到的不是àéè.

我认为这可能是编码问题,但文件是 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 回答