htmlentities возвращает пустую строку

Следующий код выводит пустую строку. Причина в том, что "-" в текстовом формате, но почему? Какие символы кодирует 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>

Ответ 1

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

Ответ 2

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

$text = htmlentities(mb_convert_encoding($text, 'UTF-8', 'ASCII'), ENT_SUBSTITUTE, "UTF-8");

Ответ 3

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