ホームページ  >  記事  >  バックエンド開発  >  PHP SimpleXML を使用した「入力は適切な UTF-8 ではありません。エンコーディングが示されています !」エラーを解決する方法?

PHP SimpleXML を使用した「入力は適切な UTF-8 ではありません。エンコーディングが示されています !」エラーを解決する方法?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-24 07:01:30122ブラウズ

How to Resolve

SimpleXML でのエンコーディング エラーの処理

「入力は適切な UTF-8 ではありません。エンコーディングを示してください!」 PHP の simplexml_load_string 関数を使用して XML データを処理すると、エラーが発生します。これは、XML コンテンツが UTF-8 で適切にエンコードされていないことを示しています。

不正なエンコーディングの検出

このエラーの根本原因は、XML 間のエンコーディングの不一致である可能性があります。コンテンツと PHP 環境。正しいエンコーディングを決定するには:

  • コンテンツ タイプを確認します: エンコーディング属性を持つ XML 宣言を探します (例: .
  • コンテンツの分析: 英語以外の言語のアクセントや特殊文字など、UTF-8 以外の文字が含まれていないか XML コンテンツを検査します。

XML の前処理

この問題を解決するには、次の方法を検討してください。

  • データ プロバイダーに通知する: エンコード エラーを修正できるように、サードパーティのソースに通知します。
  • 互換機能を使用します: 一時的に iconv() または mb_convert_encoding() を使用して XML を変換します想定される不正なエンコーディングから UTF-8 に変換します。
  • カスタム エンコーディング修正を作成する: エンコーディングの問題を検出して修正するためのカスタム関数または正規表現を開発します。

コールバックを使用した部分的な修正

一時的な対策として、次の関数を使用して一部の壊れた UTF-8 シーケンスを修正できます:

<code class="php">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]);
}</code>

恒久的な解決策

最善の方法は、ソースのエンコーディングを修正することです。データプロバイダーに問題を伝え、XML コンテンツを適切な UTF-8 でエンコードするようリクエストしてください。

以上がPHP SimpleXML を使用した「入力は適切な UTF-8 ではありません。エンコーディングが示されています !」エラーを解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。