16

ローカル サイトでこのエラーが発生しています。

Warning (2): htmlspecialchars(): Invalid multibyte sequence in argument in [/var/www/html/cake/basics.php, line 207]

誰が知っていますか、問題は何ですか、またはこれに対する解決策は何ですか?

ありがとう。

4

6 に答える 6

15

ファイルが UTF-8 としてエンコードされている場合は、エンコードを必ず UTF-8 に指定してください。

htmlspecialchars($str, ENT_COMPAT, 'UTF-8');

のデフォルトの文字セットhtmlspecialcharsは ISO-8859-1 (PHP v5.4 以降、デフォルトの文字セットは 'UTF-8' に変更されました) であり、マルチバイト文字に遭遇したときに問題が発生する理由を説明している可能性があります。

于 2010-09-27T12:55:59.523 に答える
5

私は本番環境でこのエラーに遭遇し、それに関するこの素晴らしい投稿を見つけました -

http://insomanic.me.uk/post/191397106/php-htmlspecialchars-htmlentities-invalid

表示エラーがオフのときにこのエラーが表示されるのは、PHP (少なくとも CentOS の場合) のバグのようです!

于 2012-07-01T15:17:43.013 に答える
4

破損した文字データを関数に入力しているか、正しいエンコーディングを指定していません。

少し前にこの問題がありました.古い動作(PHP 5.2.7より前だと思います)は、破損しても文字列を返すことでしたが、そのバージョン以降、代わりにこのエラーがスローされます.

私の解決策は、//IGNORE修飾子を使用してiconvを介して文字列をフィードし、破損したデータを削除するスクリプトを作成することでした。

(いくつかの文字列が UTF-8 で、一部は latin-1 で、通常は列に正しく定義されていない文字型を持つ破損したデータベースがありました)。

(Tatu の回答へのコメントを見て、$charset 変数の内容を確認 (および操作) することから始めます。

于 2010-09-27T19:30:15.167 に答える
1

substrutf-8 文字列で使用していたため、同じ問題がありました。
エラーはまれで、一見ランダムでした。文字列がマルチバイト文字で切り取られた場合にのみエラーが発生しました!

mb_substr問題を解決しました :)

于 2014-10-23T13:10:32.977 に答える
1

エラーが発生しないようにするための正しいコードは次のとおりです。

htmlentities($string, ENT_IGNORE, 'UTF-8') ;

str_replaceこれに加えて、必要に応じていくつかの悪い文字を置き換えてから、htmlentities 関数を使用することもできます。

このrss フィードを見てください。大きい html 記号が gt に置き換えられています。RSS フィードを読むときに見栄えが悪いかもしれないタグ。これを「-」記号や「)」などに置き換えることができます。

于 2014-05-20T15:48:57.290 に答える
0

これは、実際に私が得る最も頻繁なエラーの 1 つです。

__() 翻訳を使用しない場合もあります - äöü を含む単純なドイツ語テキストです。そこでは、ファイルのエンコーディングに注意することが特に重要です。

そのため、特殊文字を含むファイルを UTF8 として適切に保存してください。

于 2010-09-28T22:56:37.423 に答える