Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur « L'entrée n'est pas appropriée UTF-8, indiquez l'encodage ! » lors de l'utilisation de PHP SimpleXML ?

Comment résoudre l'erreur « L'entrée n'est pas appropriée UTF-8, indiquez l'encodage ! » lors de l'utilisation de PHP SimpleXML ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 07:01:30124parcourir

How to Resolve

Gestion des erreurs d'encodage avec SimpleXML

Le message "L'entrée n'est pas correcte UTF-8, indiquez l'encodage !" une erreur survient lors du traitement des données XML à l'aide de la fonction simplexml_load_string de PHP. Cela suggère que le contenu XML n'est pas codé correctement en UTF-8.

Détection d'un codage incorrect

La cause première de cette erreur peut être une incompatibilité de codage entre le XML le contenu et l'environnement PHP. Pour déterminer le codage correct :

  • Examinez le type de contenu : Recherchez une déclaration XML avec un attribut de codage, par exemple .
  • Analyser le contenu : Inspectez le contenu XML pour détecter les caractères non UTF-8, tels que les accents ou les caractères spéciaux provenant de langues autres que l'anglais.

Pré-traitement du XML

Pour résoudre ce problème, envisagez les méthodes suivantes :

  • Avertissez le fournisseur de données : Informez la source tierce de l'erreur d'encodage afin qu'elle puisse la rectifier.
  • Utilisez une fonction de compatibilité : Utilisez temporairement iconv() ou mb_convert_encoding() pour convertir le XML d'un encodage supposé incorrect vers UTF-8.
  • Créez un correctif d'encodage personnalisé : Développez une fonction personnalisée ou une expression régulière pour détecter et corriger les problèmes d'encodage.

Correction partielle à l'aide d'un rappel

À titre temporaire, vous pouvez utiliser la fonction suivante pour corriger certaines séquences UTF-8 mutilées :

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

Solution permanente

La meilleure approche est de rectifier l'encodage à la source. Communiquez le problème au fournisseur de données et demandez-lui d'encoder le contenu XML au format UTF-8 approprié.

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