htmlentities возвращая пустую строку - PullRequest
20 голосов
/ 09 декабря 2011

Следующий код выводит пустую строку. Причина - "ó" в тексте, но почему? Какие символы тогда кодирует utf-8?

Проблема решена при использовании iso-8859-1, но мне нужно использовать utf-8, так что я делаю не так?

<!doctype html>
<head>
  <meta charset="utf-8">
</head>

<body>
<?
$text = 'Hola ó Hola';
$text = htmlentities($text,ENT_QUOTES,'utf-8');
echo $text;
?>
</body>
</html>

Ответы [ 3 ]

32 голосов
/ 29 июля 2015

У меня была похожая проблема, и я использовал флаг ENT_SUBSTITUTE, чтобы предотвратить пустую строку.Он по-прежнему не кодировался, и я не мог полагаться на файл UTF-8, поэтому я преобразовал кодировку только в строку:

$text = htmlentities(mb_convert_encoding($text, 'UTF-8', 'ASCII'), ENT_SUBSTITUTE, "UTF-8");
7 голосов
/ 09 декабря 2011

Убедитесь, что вы сохранили исходный файл как UTf-8, если он содержит строку. В противном случае убедитесь, что все, что поставляет строка, передает ее как UTF-8.

0 голосов
/ 31 марта 2017
  1. Откройте редактор кода (например, notepad ++ или другой).
  2. Нажмите New > Save As.., введите имя файла (какое-то время пустое) и выберите тип PHP Hypertext ...
  3. Теперь скопируйте все содержимое вашего исходного файла и поместите в этот новый файл.
  4. Нажмите save и попробуйте.
...