Accent et xml

Accent et xml - PHP - Programmation

Marsh Posté le 14-09-2004 à 17:53:34    

Salut
 
Bon voila mon soucis :
J'ai un site web que je developpe en PHP avec le contenu et les style sous formes XML/XSL
 
Rien d'etonnant donc sauf que les caractère accentué ne s'affichent pas du tout , mal en fait !!
J'ai donc fais pas mal de recherche et vu que sur php , le codage par defaut du parseur est ISO-8859-1, mes fichiers xml sont aussi encodé de la meme maniere.  
 
C la que je ne comprends pas car si je prends les memes fichiers xml et que je les parse avec les objets du framework.Net (en ASP.NET donc) les accents passent !!!
 
Je suis en PHP5 et comme je ne m'y connais pas enormément je fait appel a vos lumieres. J'ai reproduit le pb sur un exemple, ça donne ça :  
 
test.php
***********************************************************
<html>
<head>
<title>test XML</title>
</head>
<body>
<?
$document = new DomDocument;
$document->preserveWhiteSpace = false;
$document->load("./data.xml" );
 
$listItem = $document->getElementsByTagName("data" );
foreach ($listItem as $nodeList)
{
    print $nodeList->firstChild->nodeValue ;
    print '<br/>';
}
?>
</body>
*********************************************************
 
 
data.xml  
**********************************************************
<?xml version="1.0" encoding="ISO-8859-1"?>
<test>
        <data>un é</data>
        <data>deux è</data>
        <data>trois à</data>
</test>
**********************************************************
 
 
Resultat :  
 
un é
deux è
trois Ã
 
 
Quelqu'un a une idée ?
 
 
 
 

Reply

Marsh Posté le 14-09-2004 à 17:53:34   

Reply

Marsh Posté le 14-09-2004 à 20:49:08    

je crois que cela viens de ca  "encoding="ISO-8859-1"" il faut peut etre utiliser une autre norme comme l'utf8
 
Yannick

Reply

Marsh Posté le 14-09-2004 à 20:49:51    

da


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 15-09-2004 à 11:23:00    

en fait, j'ai le même problème que Gedeon et pourtant, j'ai bien précisé encoding="UTF-8"...


---------------
Matt
Reply

Marsh Posté le 15-09-2004 à 12:05:52    

De plus plus dans mon exemple , si on utyilise la norme utf8 pour le fichier xml  ça plante directement. en disant que l'encodage n'est pas bon.
Comme je l'ai dis l'encodage par défaut est a priori ISO-8859-1 par defaut sur PHP5

Reply

Marsh Posté le 15-09-2004 à 14:29:09    

Bon bizarement la solution est la suivante :
 
utf8_decode($nodeList->firstChild->nodeValue);
 
Et là ho magie les accent reviennent !
 
Ce qui veut dire que la représentation interne des objet xml ne tient pas compte de ceci encoding="ISO-8859-1". Enfin pas completement en fait car lors du chargement "DomDocument->load(....)",  si les caractères ne sont pas en accord avec l'attribut encoding ça ne passe pas.
 
Serait-ce une demi implementation du standard ????
 
Si quelqu'un a une reponse je suis preneur mais en tout cas Pb résolu !

Reply

Marsh Posté le 15-09-2004 à 17:25:34    

non .. en fait si tu déclares un fichier avec un charset en UTF-8 .. Il faut aussi que les données soient enregistrées en UTF-8!
 
Donc checker et/ou modifier les options d'enregistrements de votre éditeur. ET s'il ne le permet pas en changer.


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 16-09-2004 à 09:34:24    

Oui on est d'accord sauf dans mon les données déclaré en ISO-8859-1 et ne sont pas enregistré en UTF-8. Donc ma remarque reste valide , pourquoi des données ISO-8859-1 déclaré comme tel et sauvegardées comme tel sont elles traité en UTP-8 ?

Reply

Marsh Posté le 16-09-2004 à 17:32:13    

gedeon > le problème c'est que tu ne précises pas l'encodage de ta page test.php!
 
ET visiblement par défaut dans ton cas il applique l'utf-8.


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 28-09-2004 à 10:21:28    

Ok je vais tester en mettant precisant l'encodage de ma page test.php

Reply

Marsh Posté le 28-09-2004 à 10:21:28   

Reply

Marsh Posté le 09-12-2004 à 12:31:56    

J'ai eux ce problème a l'instant. (Xml + Xslt + Php4)
 
J'ai utilisé la fonction  

Code :
  1. xslt_set_encoding($ht,"ISO-8859-2" );


 
& ça marche nikel chrome
 
http://fr.php.net/manual/fr/functi [...] coding.php
 
(oui, c'est du gros remontage de topic, mais si ça peut aider quelqu'un ...)

Reply

Marsh Posté le 09-12-2004 à 16:23:40    

zapan666 a écrit :

J'ai eux ce problème a l'instant. (Xml + Xslt + Php4)
 
J'ai utilisé la fonction  

Code :
  1. xslt_set_encoding($ht,"ISO-8859-2" );


 
& ça marche nikel chrome
 
http://fr.php.net/manual/fr/functi [...] coding.php
 
(oui, c'est du gros remontage de topic, mais si ça peut aider quelqu'un ...)


 
ça c'est pour la lib Sablotron. Lui, il utilise Dom...
 
A essayer : mettre le encoding="ISO-8859-1" dans ton fochier, xml, xsl et en en-tête de ta page html.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed