Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1216 connectés 

  FORUM HardWare.fr
  Programmation

  Gestion des accent (et les caracteres typiquement francais) en Perl ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gestion des accent (et les caracteres typiquement francais) en Perl ??

n°61204
SebC
In Tartiflette We Trust !!!
Posté le 24-09-2001 à 11:50:50  profilanswer
 

J'ai cree un script qui, a un moment donne,
demande une entree au clavier : $var=<STDIN>
 
Il semble que la chaine recuperee dans $var ne  
contienne plus les accents et autres specificites  
de notre belle langue francaise.  
 
Comment faire pour forcer Perl a traiter egalement
ces caracteres la; pour manipuler une chaine de  
caractere contenant des accents de la meme facon que
les chaines "normales" ???
Bref comment m'y prendre pour recuperer au clavier une
chaine contenant des accents, et pouvoir la reproduire
dans un fichier de sortie ???
 
Merci de votre aide...

mood
Publicité
Posté le 24-09-2001 à 11:50:50  profilanswer
 

n°61213
Aricoh
gentil mais fo po pousser
Posté le 24-09-2001 à 12:41:52  profilanswer
 

test réalisé en console ms-dos :
 

print "Donnez un mot AVEC accent : ";
chomp ($_ = <STDIN> );
print;

 
je récupère bien les accents

 

[edtdd]--Message édité par Aricoh--[/edtdd]


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°61245
SebC
In Tartiflette We Trust !!!
Posté le 24-09-2001 à 14:16:22  profilanswer
 

Effectivement, excuse moi, je vient de realiser que le  
probleme ne vient pas de la saisie : j'ai bien mes accents  
avec le print imediat.
 
En fait, une fois que je recopie ma chaine dans le fichier
de sortie (en l'occurence un fichier html) les caracteres  
accentues sont remplace par un code (qui visiblement n'est
pas de l'ASCII) :
la chaine "dédé" apparait dans le fichier de sortie sous
la forme "d\202d\202", ce que le navigateur ne comprend pas  
et remplace par une virgule.  
 
Comment faire en sorte de generer un "é" plutot que "\202" ??
 
Merci en tous cas... :D

n°61310
SebC
In Tartiflette We Trust !!!
Posté le 24-09-2001 à 18:08:03  profilanswer
 

Mon probleme se precise, mais reste incomprehensible  :pt1cable: !!!
 
Voici le script perl source :
 
open (OUTPUT, ">test.txt" );   #open test.txt file
print "type ?\n";             #display wait message
chomp($type = <STDIN> );       #get input from keyboard
print "$type\n";              #echo input string on term
print OUTPUT $type;           #output string in test.txt file
close (OUTPUT);               #close test.txt

 
Les resultats sont interressants :
le script code le caractere "é", en hexa, 0x82
dans le fichier de sortie.
Ce 0x82 (=130 en decimal) semble correspondre  
au <ALT-130> que je tape pour obtenir un "é"  
sur le terminal (et d'ailleurs l'echo est correct).
 
Hors le code ASCII du "é" est le 233... Si je tape
un <ALT-233> lors de la saisie, alors le fichier genere
contient bien un "é", sauf que l'echo sur le terminal est
un "Ú"........... :crazy:  
 
Enfin, et pour conclure, si je prend un editeur a la
con, type notepad, que je tape un <ALT-130>, j'ai bien
un "é" a l'affichage ainsi que dans mon fichier, le  
code hexa 0xE9 (=233) est bien associe a ce  
caractere....  :hap:  
 
HELP !
Quelqu'un capte ce qui se passe ????  
D'ou peut venir ce probleme ???
Comment le resoudre / contourner ???

n°61311
minusplus
Posté le 24-09-2001 à 18:10:05  profilanswer
 

kel OS ?

n°61312
SebC
In Tartiflette We Trust !!!
Posté le 24-09-2001 à 18:14:58  profilanswer
 

j'l'ai tourne avec des resultats identiques sur
NT4.0 et 2K.

n°61380
Aricoh
gentil mais fo po pousser
Posté le 25-09-2001 à 10:15:59  profilanswer
 

franchement incompréhensible en effet
 
généralement, la seule sortie où je suis sûr (sous 2000pro et sous Linux) que je conserverai mes accents c'est dans un fichier !
 
???


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°61386
barbarella
Posté le 25-09-2001 à 10:38:45  profilanswer
 

slt,
 
j'ai deja rencontré ce prob. La table ascii pour les valeurs > 127 a changé au courant des années 90. J'ai encore de vieux bouquin qui me donne 'é' = 130, mais aujourd'hui 'é' vaut bien 233. C'est uniquement quand tu utilises le alt+numpad que tu réutilises l'ancienne table ascii (ça doit être une histoire de hardware, les puces interprete é pour 130, enfin un truc du genre je crois).
 
Si tu utilises le petit prog de Windows 'tables de caractères' (voir accessoires) tu verras que tous les caratères avec accents ont été regroupés et ont une valeur > 191.
 
Mais ça me parait être un prob un peu différent de celui de départ.
 
Sur internet :
 
Pour le passage de param dans une URL il faut coder les caractères spéciaux par %XX, é donne %E9
 
Pour le texte a afficher é doit être remplacé par é = é  
 
 
Si ça peut t'aider ....

n°61393
youdontcar​e
Posté le 25-09-2001 à 11:01:26  profilanswer
 

problème de page de code / unicode sûrement. aux vieux temps du dos, chaque pays partageait les même caractères de 0 à 127 et avait ses caractères spécifiques de 128 à 255. le 130 doit venir de là.
 
quand l'unicode a standardisé tout ça, le 'é' s'est retrouvé en 233.
 
et donc dans windows ça a l'air interpreté un peu n'importe comment ... :D pour le stdin dans perl le plus sûr est de se coller au standard &entity; je pense.

n°61396
SebC
In Tartiflette We Trust !!!
Posté le 25-09-2001 à 11:07:54  profilanswer
 

Effectivment, le script tourne correctement pour tous
les caractere < 127, au dela, ce n'est plus coherent.
 
Ce que je ne m'explique pas, c'est que le notepad a  
partir d'un <ALT-130> genere un 233 (ou 0xE9) et que
le terminal MS-DOS (ou Emacs) genere un 130 (ou 0x82).
 
Le Notepad ferait une converssion/recodage des caracteres
saisis au clavier qu'Emacs ou Ms-Dos ne ferait pas ?!!
Attention, nous parlons tout de meme d'un produit PetitDoux  :ouch: , faudrait pas etre trop elogieux qd meme  :lol: !!!!
 
Concernant les pages html, les nouveaux browser savent
directement interpreter les accents donc plus vraiment
la peine de coder en "é"...
 
J'aimerai eviter de me taper un decodage lettre a lettre  
de la chaine pour la stocker dans le fichier....  
Quelqu'un aurait un moyen/idee de contourner ce probleme ???

mood
Publicité
Posté le 25-09-2001 à 11:07:54  profilanswer
 

n°61400
SebC
In Tartiflette We Trust !!!
Posté le 25-09-2001 à 11:11:47  profilanswer
 

S'cuse youdontcare, nos reponses se sont croisees,
que veux tu dire par se coller au standard &entity; ?
A la lecture de la chaine remplacer tout ce qui resemble
a un caractere special par sa notation en é ?

n°61402
youdontcar​e
Posté le 25-09-2001 à 11:16:08  profilanswer
 

SebC a écrit a écrit :

S'cuse youdontcare, nos reponses se sont croisees,
que veux tu dire par se coller au standard &entity; ?
A la lecture de la chaine remplacer tout ce qui resemble
a un caractere special par sa notation en é ?  



oui. enfin c'est mon point de vue, je fais une fixation sur ce genre de trucs (xml&co) en ce moment :D
 
en codant ton texte de cette façon, il est en fait en unicode, donc tu peux traiter des scripts japonais, russes, européens avec la même routine. je suis pas forcément partisan d'encoder ça avec les é, &eagrave; & co, un simple &#233; suffit.
 
ça implique évidemment de coder tous les caractères > 127, et le '&' en & ou en &#38;.

 

[edtdd]--Message édité par youdontcare--[/edtdd]

n°61405
SebC
In Tartiflette We Trust !!!
Posté le 25-09-2001 à 11:21:26  profilanswer
 

youdontcare a écrit a écrit :

 
ça implique évidemment de coder tous les caractères > 127, et le '&' en & ou & ... son code, me souvient plus.  
 
 




 
Oui, mais Quid du script, il devient specifique au terminal
si je fait un decodage a la main :  
   130 = é
   133 = á
   etc...
Le jour ou le script tourne sur un terminal "unicode", la
virgule sera remplacee par un é..... C'est aussi ca qui  
me pose probleme.... pourtant si le notepad le fait, il doit
bien y avoir une methode de conversion...........

n°61410
youdontcar​e
Posté le 25-09-2001 à 11:31:26  profilanswer
 

SebC a écrit a écrit :

 
 
Oui, mais Quid du script, il devient specifique au terminal
si je fait un decodage a la main :  
   130 = é
   133 = á
   etc...
Le jour ou le script tourne sur un terminal "unicode", la
virgule sera remplacee par un é..... C'est aussi ca qui  
me pose probleme.... pourtant si le notepad le fait, il doit
bien y avoir une methode de conversion...........  



vi effectivement, je pense trop au web, désolé. il doit tourner sur quel genre de machines ton script ?
 
si tu es en dos il y a moyen de récupérer des infos sur la page de code (mais me demande pas comment :D). après il faudrait convertir chaque page différente en unicode (par exemple) ...

n°61420
SebC
In Tartiflette We Trust !!!
Posté le 25-09-2001 à 11:48:43  profilanswer
 

youdontcare a écrit a écrit :

vi effectivement, je pense trop au web, désolé. il doit tourner sur quel genre de machines ton script ?
 
si tu es en dos il y a moyen de récupérer des infos sur la page de code (mais me demande pas comment :D). après il faudrait convertir chaque page différente en unicode (par exemple) ...  




 
Oui, ca serait une solution, mais ca devient un peu lourd...
 
J'vais pas m'eterniser sur ce point, j'vais appliquer  
ta methode : convertir au dela de 127 en
&#xxx; et qd les terminaux seront en unicode, je  
corrigerai...
 
Merci a tous de votre aide : Aricoh, minusplus, Barbarella, et youdontcare... merci bcp...
 
Pour info, le script que je suis en train d'ecrire sert
a generer a partir d'une arborescence une galerie photo
en html avec thumbnails et commentaires... photo numerique
oblige.... si ca vous interresse n'hesitez surtout pas; c'est
avec plaisir que j'vous passerai le code source...
 
Ceci dit, si une idee lumineuse vous vient, n'hesitez pas
non plus.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Gestion des accent (et les caracteres typiquement francais) en Perl ??

 

Sujets relatifs
[java] gestion d'évenement (bug avec 1.1)HTML : convertir les accents en caractères de type "& e a c u t e ;"
[Delphi/COM+] Gestion des exceptions ...Programme en Perl qui peut compresser les données d'un répertoire ?
Configurer CGI/perl en localgestion d'evenement sous IE avec Javascript
ou trouver perlGestion de la sourie en assembleur
[PERL] lien utiles[visual c++ 6] ou trouver de la doc sur le net en francais
Plus de sujets relatifs à : Gestion des accent (et les caracteres typiquement francais) en Perl ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR