web-dev-qa-db-ja.com

空の文字列を返すhtmlentities

次のコードは空の文字列を出力します。原因は$ textの「ó」ですが、なぜですか?それでは、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>
22
Tom

文字列が含まれている場合は、ソースファイルをUTf-8として保存してください。それ以外の場合は、文字列を提供しているものがUTF-8として提供されていることを確認してください。

7
Halcyon

同様の問題が発生し、フラグENT_SUBSTITUTEを使用して空の文字列を防止しました。それでもエンコードせず、ファイルがUTF-8であることに依存できなかったため、文字列のみでエンコードを変換しました。

$text = htmlentities(mb_convert_encoding($text, 'UTF-8', 'ASCII'), ENT_SUBSTITUTE, "UTF-8");
34
jgreep
  1. コードエディタを開きます(たとえば、notepad ++など)。
  2. New > Save As..をクリックして、ファイルの名前を入力し(しばらく空白)、タイプとしてPHP Hypertext ...を選択します。
  3. 次に、元のファイルのすべてのコンテンツをコピーして、この新しいファイルに入れます。
  4. 保存をクリックして試してください。
0
Ciniro Nametala