Вы должны установить третий параметр htmlentities()
, который указывает использовать кодировку. Поскольку вы не установили его, используется значение по умолчанию, а по умолчанию используется ISO-8859-1, а не UTF-8.
Как и htmlspecialchars (), он принимает необязательный третий аргумент charset, который определяет набор символов, используемый при преобразовании. В настоящее время набор символов ISO-8859-1 используется по умолчанию.
Просто чтобы уточнить, это подпись функции:
string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $charset [, bool $double_encode = true ]]] )
и здесь вы найдете официальный документ: http://php.net/manual/en/function.htmlentities.php