Wie behebe ich den Fehler „Eingabe ist nicht korrekt UTF-8' in PHPs SimpleXML_Load_String?

DDD
Freigeben: 2024-10-24 06:33:30
Original
589 Leute haben es durchsucht

How to Resolve

XML-Fehler mit SimpleXML_Load_String von PHP dekodieren

In PHP kann die Verwendung der Funktion simplexml_load_string zum Verarbeiten von XML-Antworten manchmal zu dem Fehler führen: „Eingabe ist kein korrektes UTF-8, geben Sie die Codierung an!“ Obwohl das XML eine UTF-8-Kodierung deklariert, kann es Nicht-UTF-8-Zeichen enthalten, insbesondere wenn es sich um Sprachen wie Spanisch handelt.

Codierungsinkompatibilitäten beheben

An Um dieses Problem zu beheben, können mehrere Strategien angewendet werden:

  • Benachrichtigen Sie den Datenanbieter:Kontaktieren Sie die Drittanbieterquelle, informieren Sie sie über das Codierungsproblem und fordern Sie sie auf, das Problem zu beheben.
  • XML vorverarbeiten:

    • utf8_encode(): Verwenden Sie diese Funktion, um das XML in gültiges UTF zu konvertieren -8. Diese Methode kann jedoch zu Mojibake führen, wenn das XML sowohl gültige UTF-8- als auch Nicht-UTF-8-Zeichen enthält.
    • iconv() oder mbstring: Versuchen Sie, das XML aus UTF zu konvertieren -8 wieder in UTF-8, in der Hoffnung, dass die Funktion die Fehler korrigiert.
    • Benutzerdefinierte Validierung/Korrektur: Kodierungssequenzen manuell validieren und korrigieren, eine zeitaufwändige Option.

Erkennen der korrekten Kodierung

Leider bietet PHP keine definitive Methode, um die korrekte Kodierung einer XML-Datei automatisch zu erkennen.

Teilweise Korrektur

Als vorübergehende Lösung kann die folgende Funktion verwendet werden, um häufige Latin-1-Kodierungsprobleme in UTF-8 teilweise zu beheben:

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]);
}
Nach dem Login kopieren

Beachten Sie, dass dieser Fix nicht umfassend ist und möglicherweise nicht alle Codierungsdiskrepanzen behebt.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Eingabe ist nicht korrekt UTF-8' in PHPs SimpleXML_Load_String?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!