2009-04-03 5 views
2

J'ai des problèmes pour que PHP fonctionne bien avec SoapServer + UTF-8. Chaque fois que quelqu'un envoie une demande de savon avec des caractères non anglais (c'est-à-dire des citations drôles, des caractères accentués, etc.), le SoapServer lève une exception disant "Mauvaise demande". J'ai essayé de décoder la requête avec utf8_decode et même HTML Special Characters a encodé le texte. Rien ne fonctionne pour moi.Surmonter les problèmes d'encodage avec PHP, SoapServer, UTF-8, et les caractères non anglais?

Je cherche un point dans la bonne direction parce que je suis perdu pour le moment.

Répondre

3

assurez-vous que les deux SoapServer et SoapClient sont initialisés avec encodage UTF-8:

$client = new SoapClient("some.wsdl", array('encoding'=>'UTF-8')); 
$server = new SoapServer("some.wsdl", array('encoding'=>'UTF-8')); 

-ce que le XML des requêtes avec les "citations drôles, caractères accentués, etc." valider?

0

Une prochaine étape évidente serait de vérifier que la demande que vous recevez est réellement encodée en UTF-8. Un sniffer de réseau comme WireShark (ou même juste un peu de travail avec un simple vieux client telnet pourrait fonctionner) vous permettrait d'examiner les données exactes transmises au serveur. Regardez à travers cela et vérifiez qu'il est effectivement valide UTF-8. L'utilisation de utf8_encode() sur la réponse de savon peut aider.

+0

http://stackoverflow.com/questions/1347019/problems-with-special-characters-in-php-soap-client – StuffMaster

Questions connexes