[RESOLU] problème avec caractères accentués dans flux xml

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] problème avec caractères accentués dans flux xml

Re: problème avec caractères accentués dans flux xml

par @rthur » 08 avr. 2015, 19:52

Top !
Merci pour le partage de la solution :-)

Re: problème avec caractères accentués dans flux xml

par atriaforever » 08 avr. 2015, 19:49

C'était bien nusoap qui posait problème ! Pour ceux qui rencontrerait le même problème, voici la solution :

1/ Dans nusoap.php :
commenter la ligne : var $soap_defencoding = 'ISO-8859-1';
décommenter la ligne : var $soap_defencoding = 'UTF-8';

2/ Faire de même dans class.nusoap_base.php.

3/ Et à chaque appel de web service, après la ligne :
$client=new nusoap_client($wsdl, 'wsdl');
Ajouter les deux lignes :
$client->soap_defencoding='UTF-8';
$client->decode_utf8 = false;

Re: problème avec caractères accentués dans flux xml

par tof73 » 08 avr. 2015, 19:35

En-têtes de la réponse
X-Powered-By: ARR/2.5, ASP.NET
Server: Microsoft-IIS/7.5
Content-Type: text/xml;charset=ISO-8859-1

il y a donc conflit. c'est alors compliqué de ratrapper le coup.

Re: problème avec caractères accentués dans flux xml

par atriaforever » 08 avr. 2015, 19:26

Bonjour et merci pour les différentes réponses mais pour l'instant l'affichage est toujours incorrect.
Pour arthur, il y avait en fait quelques changements au niveau de l'affichage, mais mineurs, et pour krief, le header est déjà déclaré en UTF-8 (et non pas iso_UTF-8 mais est-ce vraiment valide ?).
Voici quelques détails supplémentaires.
Ma page PHP appelle le service web suivant :
https://s1.knowledgeplaces.com/KPWS1/se ... nById&id=2
On voit dans la balise <ns1:description> que la description contient des caractères accentués qui sont bien affichés dans le navigateur.
Si on affiche le code source de cet URL, on voit bien la balise <?xml version="1.0" encoding="UTF-8"?>.
J'appelle ce service web en PHP en utilisant la librairie nusoap.
C'est peut être la librairie nusoap que je dois adapter, j'ai commencer à googler dessus et elle a l'air configurée par défaut pour de l'iso-8859.

Re: problème avec caractères accentués dans flux xml

par krief » 08 avr. 2015, 07:33

Envoie en tout premier tes infos en UTF - 8 via le header pour que le serveur comprenne que tu fais passer cet encodage :

<?php
header('Content-Type: text/html; charset=iso-UTF-8');
?>
cela devrait suffire

Re: problème avec caractères accentués dans flux xml

par @rthur » 07 avr. 2015, 19:42

Comment as-tu fait appel à utf8_encode/decode ?
Car ça doit forcément changer quelque chose dans l'affichage de tes variables.

Re: problème avec caractères accentués dans flux xml

par atriaforever » 07 avr. 2015, 16:54

Comme indiqué précédemment, le fichier source de ma page PHP est encodé en UTF8, et la page HTML généré par cette page PHP contient les lignes suivantes :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
<title>home</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

J'ai ajouté l'appel aux fonctions tu m'as fournies, ça ne change rien.

Re: problème avec caractères accentués dans flux xml

par @rthur » 07 avr. 2015, 16:24

Bonjour,

C'est probablement que le flux XML récupéré n'est pas dans le même charset que ta page, du coup il faut que tu utilises les fonctions utf8_encode() ou utf8_decode() avant d'utiliser ces variables.

problème avec caractères accentués dans flux xml

par atriaforever » 07 avr. 2015, 15:25

Bonjour.

Mon site est en PHP 5.6.5 et mes pages PHP sont encodées en UTF8.

Je récupère des données depuis une base MySQL en utilisant des services Web et quand je teste ces services web depuis le navigateur la réponse est correcte :
- j'ai bien l'entête : <?xml version="1.0" encoding="UTF-8"?>
- quand j'affiche la réponse du service web dans le navigateur, les caractères accentués sont affichés correctement

Dans mon code PHP, je récupère les variables du flux xml renvoyé par le service web en utilisant la librairie nusoap.

Quand je fais un echo de n'importe quelle variable que je récupère ainsi du flux xml, les caractères accentués ne sont pas affichés correctement (des ? dans des losanges au lieu des "é" par exemple), bien que la page HTML renvoyée par PHP comporte l'entête suivant :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
<title>home</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

Merci par avance pour vos conseils avisés.