PHP: utf-8 кодирует, htmlentities дает странные результаты - PullRequest
3 голосов
/ 01 июля 2011

Я пытаюсь получить данные из формы POST.Когда пользователь вводит "habláis", он отображается в виде источника как "habláis".Я хочу преобразовать это в "habláis" для сравнения строк, но и utf8_encode(), и htmlentities() выводят habláis, а htmlspecialchars() ничего не делает.Я бы использовал str_replace, но он не распознает á при поиске строки.

Я последовательно использую кодировку utf-8 для всех страниц.Есть идеи, что происходит?

Ответы [ 2 ]

4 голосов
/ 01 июля 2011

Возможно, вы не указали UTF-8 в качестве набора символов для операции htmlentities().

3 голосов
/ 01 июля 2011

Я не уверен, что это ваша проблема, но вы вызываете htmlentities с параметром UTF-8? Я спрашиваю, потому что это не по умолчанию:

Как и htmlspecialchars (), требуется необязательный третий аргумент charset, который определяет набор символов, используемый в преобразование. В настоящее время ISO-8859-1 набор символов используется по умолчанию.

Так что вы можете попробовать вызвать вашу функцию следующим образом:

$output = htmlentities($input, ENT_COMPAT, 'UTF-8');

Решает ли это вашу проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...