Jeux de caractères

Le
jean-michel bain-cornu
Bonjour,

J'ai un peu galéré avec les jeux de caractères.
L'utilisation en est pourtant très simple, et voici un petit exemple qui
pourra être utile aux débutants en la matière.

Cet exemple crée une chaîne s alimentée par un texte saisi avec un
éditeur sous windows (en l'occurence boa). Elle est ensuite convertie en
chaîne unicode su, qui permet d'avoir n'importe quel jeu de caractères
avec la fonction encode. Sauf pour le format zip, pour lequel il faut
passer par la chaîne ascii.

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
print 'natif:',s
su= unicode(s,'iso-8859-1')
print 'iso-8859-1:',su.encode('iso-8859-1')
print 'cp850:',su.encode('cp850')
print 'utf7:',su.encode('utf7')
print 'quopri:',su.encode('quopri')
print 'zip:',s.encode('zip')

A+
jm
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christophe
Le #555992
Bonjour,

J'ai un peu galéré avec les jeux de caractères.
L'utilisation en est pourtant très simple, et voici un petit exemple qui
pourra être utile aux débutants en la matière.

Cet exemple crée une chaîne s alimentée par un texte saisi avec un
éditeur sous windows (en l'occurence boa). Elle est ensuite convertie en
chaîne unicode su, qui permet d'avoir n'importe quel jeu de caractères
avec la fonction encode. Sauf pour le format zip, pour lequel il faut
passer par la chaîne ascii.

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
print 'natif:',s
su= unicode(s,'iso-8859-1')
print 'iso-8859-1:',su.encode('iso-8859-1')
print 'cp850:',su.encode('cp850')
print 'utf7:',su.encode('utf7')
print 'quopri:',su.encode('quopri')
print 'zip:',s.encode('zip')

A+
jm


Dans ce case, je signale que la combinaison de ces trois lignes :

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
su= unicode(s,'iso-8859-1')


Est exactement équivalent à :

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
su= u"Voilà l'été indien"

jean-michel bain-cornu
Le #555991
Dans ce case, je signale que la combinaison de ces trois lignes :

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
su= unicode(s,'iso-8859-1')


Est exactement équivalent à :

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
su= u"Voilà l'été indien"


Pas tout à fait : tu ne peux pas utiliser la notation u"chaîne" si la
chaîne est dans une variable...

Christophe
Le #555990
Dans ce case, je signale que la combinaison de ces trois lignes :

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
su= unicode(s,'iso-8859-1')


Est exactement équivalent à :

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
su= u"Voilà l'été indien"


Pas tout à fait : tu ne peux pas utiliser la notation u"chaîne" si la
chaîne est dans une variable...


Pardon ?


jean-michel bain-cornu
Le #555989
Dans ce case, je signale que la combinaison de ces trois lignes :

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
su= unicode(s,'iso-8859-1')


Est exactement équivalent à :

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
su= u"Voilà l'été indien"


Pas tout à fait : tu ne peux pas utiliser la notation u"chaîne" si la
chaîne est dans une variable...


Pardon ?
Et bien on ne peut utiliser la notation u"quelquechose" qu'avec un

littéral. Etant donnée une chaîne contenue dans une variable "s", je ne
peux pas faire "u's'". Je suis obligé de faire "unicode(s,charset)". Ce
qui veux dire qu'on a besoin de la fonction unicode() chaque fois que
l'on ne connaît pas le contenu de la chaîne. Et toc ;-)
Ou alors me trompje ?



Christophe
Le #555988
Dans ce case, je signale que la combinaison de ces trois lignes :

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
su= unicode(s,'iso-8859-1')


Est exactement équivalent à :

# -*- coding: iso-8859-1 -*-
s= "Voilà l'été indien"
su= u"Voilà l'été indien"


Pas tout à fait : tu ne peux pas utiliser la notation u"chaîne" si la
chaîne est dans une variable...


Pardon ?
Et bien on ne peut utiliser la notation u"quelquechose" qu'avec un

littéral. Etant donnée une chaîne contenue dans une variable "s", je ne
peux pas faire "u's'". Je suis obligé de faire "unicode(s,charset)". Ce
qui veux dire qu'on a besoin de la fonction unicode() chaque fois que
l'on ne connaît pas le contenu de la chaîne. Et toc ;-)
Ou alors me trompje ?


Bien sur, mais ce que je voulais dire, c'est que si tu as une chaine
litérale sous la main et que tu la veux au format unicode, il est
inutile de passer par la fonction de convertion :)




MC
Le #555724
Bonjour !

ça a le mérite de bien montrer (rappeler) qu'il faut d'abord décoder
une chaîne, afin de pouvoir l'encoder (pour l'afficher)

--
@-salutations

Michel Claveau
Publicité
Suivre les réponses
Poster une réponse
Anonyme