我有以下代码:
function testAccents() {
$str = "àéè";
$html = htmlentities($str);
echo $html;
}
当我运行它时,我得到àéè
而不是à éè
。
我认为这可能是编码问题,但文件是utf-8:
> file -bi PublicationTest.php
text/x-c++; charset=utf-8
为什么我会得到这个奇怪的结果?
编辑:我使用PHP 5.3。
答案 0 :(得分:15)
在PHP 5.4.0之前,htmlentities()
默认需要ISO-8859-1数据。它将您的UTF-8输入解释为单字节字符,这会产生有趣的结果。
专门指定编码。
$html = htmlentities($str, ENT_COMPAT, "UTF-8");