У меня есть следующий код:
function testAccents() { $str = "àéè"; $html = htmlentities($str); echo $html; }
Когда я запускаю его, вместо того чтобы получать àéè
Я получаю à éè
,
Я думал, что это может быть проблема кодирования, но файл utf-8:
> file -bi PublicationTest.php text/x-c++; charset=utf-8
Почему я получаю этот странный результат?
EDIT: Я использую PHP 5.3.
До PHP 5.4.0 htmlentities()
по умолчанию принимает данные ISO-8859-1. Он интерпретирует ваш ввод UTF-8 как однобайтовые символы, что приводит к смешным результатам, которые вы получаете.
Укажите конкретную кодировку.
$html = htmlentities($str, ENT_COMPAT, "UTF-8");