Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Jeux de caractères

6 réponses
Avatar
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

6 réponses

Avatar
Christophe
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"

Avatar
jean-michel bain-cornu
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...

Avatar
Christophe
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 ?


Avatar
jean-michel bain-cornu
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 ?



Avatar
Christophe
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 :)




Avatar
MC
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