Maison >développement back-end >tutoriel php >Comment résoudre l'erreur « L'entrée n'est pas appropriée UTF-8 » dans simplexml_load_string de PHP avec XML ?

Comment résoudre l'erreur « L'entrée n'est pas appropriée UTF-8 » dans simplexml_load_string de PHP avec XML ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 07:13:02718parcourir

How to Resolve

Gestion des encodages UTF-8 non valides lors du chargement de XML à l'aide de simplexml_load_string en PHP

Lors du traitement des réponses XML provenant de sources externes, vous pouvez rencontrer l'erreur : "L'entrée n'est pas correcte UTF-8, indiquez l'encodage !" causé par des écarts entre l'encodage déclaré et le contenu réel.

Identification du problème

Vérifiez le contenu XML par rapport à l'encodage déclaré. S'il ne s'agit vraiment pas d'UTF-8, vous devez trouver une solution pour pré-traiter et corriger les incompatibilités d'encodage.

Options de pré-traitement

  • utf8_encode() : Utilisez cette fonction pour potentiellement résoudre le problème, mais elle peut introduire mojibake si le XML contient à la fois de l'UTF-8 valide et d'autres jeux de caractères.
  • iconv() ou mbstring : Tentative de conversion de la chaîne UTF-8 en UTF-8, en ignorant les caractères non valides.

Validation et correction manuelles

Ceci Cette approche nécessite une connaissance de l'UTF-8 et est complexe mais permet des correctifs précis.

Solution partielle

Pour une solution de contournement temporaire, envisagez d'utiliser la fonction fournie ci-dessous pour corriger certains des problèmes d'encodage :

<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>

Bonne pratique

Informez le fournisseur de données de l'encodage invalide pour demander un correctif permanent. Une gestion appropriée du codage des caractères garantit l'interopérabilité et évite tout comportement inattendu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn