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

 


Dernière réponse
Sujet : Gestion des accent (et les caracteres typiquement francais) en Perl ??
SebC

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.


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
SebC

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.

youdontcare

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) ...

SebC

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...........

youdontcare

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 é suffit.
 
ça implique évidemment de coder tous les caractères > 127, et le '&' en & ou en &.

 

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

SebC 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 é ?
SebC 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 ???
youdontcare 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.
barbarella 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 ....
Aricoh 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 !
 
???
SebC j'l'ai tourne avec des resultats identiques sur
NT4.0 et 2K.
minusplus kel OS ?
SebC 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 ???
SebC 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
Aricoh 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]

SebC 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...

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)