Я не уверен, что это ваша проблема, но вы вызываете htmlentities
с параметром UTF-8? Я спрашиваю, потому что это не по умолчанию:
Как и htmlspecialchars (), требуется
необязательный третий аргумент charset, который
определяет набор символов, используемый в
преобразование. В настоящее время ISO-8859-1
набор символов используется по умолчанию.
Так что вы можете попробовать вызвать вашу функцию следующим образом:
$output = htmlentities($input, ENT_COMPAT, 'UTF-8');
Решает ли это вашу проблему?