6
4

1 に答える 1

14

その文字列は有効なUTF-8エンコーディングでエンコードされていません。UTF-16のような別のエンコーディングである可能性があります。あるいは、どの形式にも対応しないバイナリジャンクが含まれている可能性があります。

つまり、htmlspecialchars()のエンコーディングタイプパラメータとして「UTF-8」を指定したため、文字列が「UTF-8」に準拠していない場合は空の文字列が返されます。これはPHPマニュアルに記載されています。

簡単な修正は、置換フラグまたは無視フラグを使用することです。変化する:

htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")

に:

htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_SUBSTITUTE, "UTF-8")

または:

htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_IGNORE, "UTF-8")

注:ENT_IGNOREは、非準拠のバイトを削除します。これにより、セキュリティの問題が発生する可能性があります。 文字列の内容と、文字列がどのようにエンコードされているかを真に理解することをお勧めします。単純なENT_IGNORE修正を使用するのではなく、問題の原因を修正してください。

文字列がUTF-8でエンコードされていない理由を自問する必要があります...そうであるはずですが、そうではありません。

私もたまたまこの問題に遭遇しました。空の文字列が返される理由の詳細をここで読むことができます。

于 2012-07-29T03:36:18.027 に答える