PHP の SimpleXML_Load_String を使用した XML エラーのデコード
PHP で、simplexml_load_string 関数を使用して XML 応答を処理すると、次のエラーが発生する場合があります。は適切な UTF-8 ではありません。エンコーディングを示してください。」 XML で UTF-8 エンコーディングが宣言されているにもかかわらず、特にスペイン語などの言語を扱う場合、非 UTF-8 文字が含まれる可能性があります。
エンコーディングの非互換性の修正
この問題に対処するには、いくつかの戦略を採用できます。
XML の前処理:
正しいエンコーディングの検出
残念ながら、PHP には、XML ファイルの正しいエンコーディングを自動的に検出する決定的な方法が提供されていません。
部分修正
一時的な解決策として、次の関数を使用して、UTF-8 での一般的な Latin-1 エンコーディングの問題を部分的に修正できます:
function fix_latin1_mangled_with_utf8_maybe_hopefully_most_of_the_time($str) { return preg_replace_callback('#[\xA1-\xFF](?![\x80-\xBF]{2,})#', 'utf8_encode_callback', $str); } function utf8_encode_callback($m) { return utf8_encode($m[0]); }
この修正は包括的なものではなく、すべてのエンコーディングの不一致を解決できるわけではないことに注意してください。
以上がPHP の SimpleXML_Load_String の「入力が適切な UTF-8 ではありません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。