Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Web
Web Toutes vos questions sur la construction de pages web en Perl (CGI, Ajax, mod_perl, sessions, ...) Avant de poster, veuillez consulter les FAQs perl, les cours Perl et les sources Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/10/2012, 13h43   #1
socaw
Nouveau Membre du Club
 
Homme
Inscription : mars 2010
Messages : 84
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : mars 2010
Messages : 84
Points : 35
Points : 35
Par défaut problème d'accents avec GD::Graph dans une page web

Bonjour à tous,

Je dois mettre à jour un site web en Perl.

Un des scripts contient un formulaire qui appelle un autre script qui crée un graphe en utilisant les modules :
- GD;
- GD::Graph::lines;

Le graphe créé est récupéré dans un iframe de la page appelante. Jusque-là ça fonctionne...

Le seul problème vient des légendes du graphe. Certains mots contiennent des accents. Ci-dessous, un extrait du code utilisé pour faire les légendes avec le module GD.

Code :
1
2
3
4
5
$graph = GD::Graph::lines->new(400, 350);
$graph->set(
x_label => 'nombre de pièces produites',
...
);
Or le "e" accent grave du mot pièces s'affiche bizarrement. Je précise que mes fichiers sont en utf8, que le charset des pages est renseigné en utf8. Je travaille sous Windows XP et wamp pour les tests et Windows serveur pour la production.

J'ai essayé d'utiliser le module Encode avec différents encodages, rien n'y fait, les caractères sont toujours mauvais.

J'ai essayé un autre bidouillage, en définissant des varibiables qui contiennent le format unicode des caractères accentués et en concaténant ces variables dans la légende des graphes, le code ressemble à ça :
Code :
1
2
my $e_grave = "\x{00E8}";
$graph->set(x_label => 'nombre de pi'.$e_grave.'ces produites');
Il s'avère que cela fonctionne pour tous les caractères accentués testés SAUF pour ce "e" accent grave où le caractère affiché est un č.

Y a-t-il une meilleure méthode de travail ? Ou y a-t-il un solution pour ce "e" accent grave ?
socaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2012, 17h23   #2
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 530
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 530
Points : 31 717
Points : 31 717
Pour mettre les accents, il y a deux solutions que j'ai testées :
1) Tu laisses ton programme en ansi et les accents passent ;
2) Tu laisses ton programme en utf-8 (ce qu je fais toujours), puis tu mets use utf8; dans ton programme. Ensuite, tu encodes le texte concerné en latin1 : $my_graph->set_legend( encode('latin1', 'tété') ,'two','three','four' );Voilà !
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2012, 09h29   #3
socaw
Nouveau Membre du Club
 
Homme
Inscription : mars 2010
Messages : 84
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : mars 2010
Messages : 84
Points : 35
Points : 35
Bonjour djibril,

Merci pour tes propositions. La première solution fonctionne chez moi, comme je n'ai pas beaucoup de temps à consacrer à ce projet je vais me contenter de cette méthode. Par contre la deuxième solution me donne toujours un č pour le è uniquement, tous les autres caractères passent correctement.
socaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h25.


 
 
 
 
Partenaires

Hébergement Web