2010-03-16 9 views
0

Je ne peux pas trouver la raison, seulement voir le message d'erreur suivant. L'entrée n'est pas correcte UTF-8, indiquer le codage! Octets 0x00 0x5D 0x5D 0x3Ene peut pas lire XML via PHP

les suivants sont mon code php

$reader2 = new XMLReader(); 
$reader2->XML($xmlstring); 
$user_data=""; 

while ($reader2->read()) { 

    if ($reader2->name == "user_id" && $reader2->nodeType == XMLReader::ELEMENT) { 
     $reader2->read(); 
     $user_data .=$reader2->value; 
    } 


} 
$reader2->close(); 

Les suivants sont des données XML

<?xml version="1.0" encoding="UTF-8" ?> 
<SOAP:Envelope xmlns:SOAP="http://www.w3.org/2003/05/soap-envelope" > 
    <SOAP:Body > 
<user_id>1234567890</user_id> 
<greeting_name><![CDATA[ABCDEF ..yl/�]]></greeting_name> 
</SOAP:Body> 
</SOAP:Envelope> 

J'essaie beaucoup de façons, mais ne trouve pas la solution . la valeur de l'étiquette d'accueil peut être des mots chinois ou anglais.

+0

Il y a un octet NULL à la fin de ce CDATA. Corrigez tout ce qui a généré ce code XML afin qu'il ne génère pas d'octets NULL, ou supprimez-les simplement du fichier en utilisant str_replace() et espérez le meilleur. –

Répondre

1

Toutes les séquences d'octets ne codent pas un caractère dans utf-8. Il y a des séquences qui n'ont pas de sens ou qui sont fausses. L'analyseur xml a trouvé une telle fausse séquence dans le document d'entrée (qui prétend être correctement codé en utf-8) et s'en est plaint. Le document XML doit être corrigé.

Questions connexes