Mauvaise encodage à l'affichage

Mauvaise encodage à l'affichage - Perl - Programmation

Marsh Posté le 20-06-2006 à 17:42:07    

Bonjour,
j'ai un bout de code perl dans lequel je créé une page HTML.  
 
Ex : print "<body>Coucou</body>";  
 
Dans ce bout de html je dois utiliser une variable perl, donc grossièrement ça donne ceci :  
 
Ex : print "<body>$test</body>"; #Avec $test ma variable.
 
Seulement cette variable provient d'un parsing d'un document XML, et j'ai l'impression que l'encodage a un soucis...
 
Voilà mon bout de code :
 
...
 my $test = "éééééééééééééé";
 print "On a 1 : $test";
print <<_EOF_;
   </div>
  </body>
  On a 2 :$test;
 </html>
...
 
Et à l'affichage j'obtiens :
On a 1 : éééééééééééééé  
On a 2 :éééééééééééééé;  
 
Donc voilà, je ne sais pas pourquoi en deux lignes l'affichage merdouille, j'utilise XML::Simple pour parser mon fichier XML, je ne vois pas du tout d'où sa peut venir.
 
Merci de votre aide.

Reply

Marsh Posté le 20-06-2006 à 17:42:07   

Reply

Marsh Posté le 20-06-2006 à 17:51:31    

Essaie avec ça dans l'en-tête de ton document HTML :
 

<META CONTENT="text/html; charset=ISO-8859-1" HTTP-EQUIV="Content-Type">

Reply

Marsh Posté le 20-06-2006 à 17:55:49    

Non ça ne change rien du tout...

Reply

Marsh Posté le 20-06-2006 à 19:13:13    

l'encodage c'est la chainlie, pasque ca depend aussi de l'encodage de ton editeur (celui dans lequel tu aura ecrit tes caracteres accentués)
 
Ton parseur XML lui il te sort de l'uf8 visiblement.
 
passe tout en UTF8 (ton editeur aussi si tu peux)
met UTF-8 comme encodage dans la balise META
 
et si ca ne suffit pas encode tes string avant de les balancer dans le HTML (ou encode le HTML final, selon comment tu t'en sert) :
 

Code :
  1. use Encode;
  2. $html = encode_utf8($html);



Message édité par pospos le 20-06-2006 à 19:13:22
Reply

Marsh Posté le 20-06-2006 à 19:14:37    

et j'ajoute que dans tous les cas il vaut mieux echapper les caracteres accentués avec des trucs genre &eacute;
 
Utilise HTML::Entities pour ca

Reply

Marsh Posté le 23-06-2006 à 09:59:32    

J'ai trouvé, j'ai utilisé ceci :
$maVariable = pack('C*', unpack 'U*', $maVariable);

Reply

Sujets relatifs:

Leave a Replay

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