...ça reconnait la différence entre de utf-8 et de l'iso-8859-1
...ça reconnait la différence entre de utf-8 et de l'iso-8859-1
...ça reconnait la différence entre de utf-8 et de l'iso-8859-1
Bonjour !
Je suis d'accord : les deux caractères correspondent bien à de l'UTF-8
"non-décodés" ; disons traités comme de l'ANSI ou de l'ASCII brut.
Ce qu'il faut, c'est que ta sortie traite l'UTF-8. Alors, question : comment
visualises-tu le résultat de tes scripts ?
Si c'est la console, problème, elle ne gère pas l'UTF-8 ; il faut alors
revenir au cp1252, utiliser la commande "CHCP 1252" pour dire à la console
de se mettre en cp1252, et, éventuellement, changer la police, dans les
propriétés de la console.
Si tu utilises une console virtuelle (par exemple avec SCite), il faut
vérifier ses paramètres, et la police de caractères utilisée. Je conseille
Arial Unicode, qui peut représenter plus de 56 000 caractères unicode.
Si tu utilises un GUI (wx, tk, etc.), il faut vérifier que tu utilises bien
une version unicode.
Si tu utilises les API de windows, (avec ctypes ou pywin32), il suffit de
choisir les version unicode, et il ne devrait pas y avoir de problème.
Perso, je travaille en cp1252 pour tout ce qui console, et en UTF-8 pour les
gros script, à cause d'un bug de Python 2.4 et 2.4.1 (sur les grandes lignes
en cp1252). Alors, dans le cas de l'UTF-8 en console, je convertis la sortie
en cp1252 (1).
J'espère que ces indications aideront...
@-salutations
Michel Claveau
(1) en fait, je n'utilise pas que cp1252, mais aussi cp1251 (Russie), cp1250
(Europe centrale), et cp1253 (Grèce), selon les besoins. Tous fonctionnent
bien sous windows.
Bonjour !
Je suis d'accord : les deux caractères correspondent bien à de l'UTF-8
"non-décodés" ; disons traités comme de l'ANSI ou de l'ASCII brut.
Ce qu'il faut, c'est que ta sortie traite l'UTF-8. Alors, question : comment
visualises-tu le résultat de tes scripts ?
Si c'est la console, problème, elle ne gère pas l'UTF-8 ; il faut alors
revenir au cp1252, utiliser la commande "CHCP 1252" pour dire à la console
de se mettre en cp1252, et, éventuellement, changer la police, dans les
propriétés de la console.
Si tu utilises une console virtuelle (par exemple avec SCite), il faut
vérifier ses paramètres, et la police de caractères utilisée. Je conseille
Arial Unicode, qui peut représenter plus de 56 000 caractères unicode.
Si tu utilises un GUI (wx, tk, etc.), il faut vérifier que tu utilises bien
une version unicode.
Si tu utilises les API de windows, (avec ctypes ou pywin32), il suffit de
choisir les version unicode, et il ne devrait pas y avoir de problème.
Perso, je travaille en cp1252 pour tout ce qui console, et en UTF-8 pour les
gros script, à cause d'un bug de Python 2.4 et 2.4.1 (sur les grandes lignes
en cp1252). Alors, dans le cas de l'UTF-8 en console, je convertis la sortie
en cp1252 (1).
J'espère que ces indications aideront...
@-salutations
Michel Claveau
(1) en fait, je n'utilise pas que cp1252, mais aussi cp1251 (Russie), cp1250
(Europe centrale), et cp1253 (Grèce), selon les besoins. Tous fonctionnent
bien sous windows.
Bonjour !
Je suis d'accord : les deux caractères correspondent bien à de l'UTF-8
"non-décodés" ; disons traités comme de l'ANSI ou de l'ASCII brut.
Ce qu'il faut, c'est que ta sortie traite l'UTF-8. Alors, question : comment
visualises-tu le résultat de tes scripts ?
Si c'est la console, problème, elle ne gère pas l'UTF-8 ; il faut alors
revenir au cp1252, utiliser la commande "CHCP 1252" pour dire à la console
de se mettre en cp1252, et, éventuellement, changer la police, dans les
propriétés de la console.
Si tu utilises une console virtuelle (par exemple avec SCite), il faut
vérifier ses paramètres, et la police de caractères utilisée. Je conseille
Arial Unicode, qui peut représenter plus de 56 000 caractères unicode.
Si tu utilises un GUI (wx, tk, etc.), il faut vérifier que tu utilises bien
une version unicode.
Si tu utilises les API de windows, (avec ctypes ou pywin32), il suffit de
choisir les version unicode, et il ne devrait pas y avoir de problème.
Perso, je travaille en cp1252 pour tout ce qui console, et en UTF-8 pour les
gros script, à cause d'un bug de Python 2.4 et 2.4.1 (sur les grandes lignes
en cp1252). Alors, dans le cas de l'UTF-8 en console, je convertis la sortie
en cp1252 (1).
J'espère que ces indications aideront...
@-salutations
Michel Claveau
(1) en fait, je n'utilise pas que cp1252, mais aussi cp1251 (Russie), cp1250
(Europe centrale), et cp1253 (Grèce), selon les besoins. Tous fonctionnent
bien sous windows.
Mais pourquoi utiliser tous ces encodages au lieu d'un seul et unique ?
UTF-8 n'est-il pas universel ?
Mais pourquoi utiliser tous ces encodages au lieu d'un seul et unique ?
UTF-8 n'est-il pas universel ?
Mais pourquoi utiliser tous ces encodages au lieu d'un seul et unique ?
UTF-8 n'est-il pas universel ?
Je pensais que toutes les chaines de
caractères seraient codées en unicode et interprétées comme telles. Mais
c'était une erreur. Apparemment, toutes les chaines de caractères sont
codées unicode (utf-8) de part le format du fichier.
Je pensais que toutes les chaines de
caractères seraient codées en unicode et interprétées comme telles. Mais
c'était une erreur. Apparemment, toutes les chaines de caractères sont
codées unicode (utf-8) de part le format du fichier.
Je pensais que toutes les chaines de
caractères seraient codées en unicode et interprétées comme telles. Mais
c'était une erreur. Apparemment, toutes les chaines de caractères sont
codées unicode (utf-8) de part le format du fichier.
L'histoire... unicode est arrivé un peu tard et d'autres solutions
alternatives ont vu jour. Faut quand même se souvenir qu'à une époque on
comptait les octets...
L'histoire... unicode est arrivé un peu tard et d'autres solutions
alternatives ont vu jour. Faut quand même se souvenir qu'à une époque on
comptait les octets...
L'histoire... unicode est arrivé un peu tard et d'autres solutions
alternatives ont vu jour. Faut quand même se souvenir qu'à une époque on
comptait les octets...
...ça reconnait la différence entre de utf-8 et de l'iso-8859-1
A condition que le fichier UTF-8 ait été enregistré sous une forme
respectueuse (cf les 4 premiers octets).
...ça reconnait la différence entre de utf-8 et de l'iso-8859-1
A condition que le fichier UTF-8 ait été enregistré sous une forme
respectueuse (cf les 4 premiers octets).
...ça reconnait la différence entre de utf-8 et de l'iso-8859-1
A condition que le fichier UTF-8 ait été enregistré sous une forme
respectueuse (cf les 4 premiers octets).
Je pensais que toutes les chaines de caractères seraient codées en
unicode et interprétées comme telles. Mais c'était une erreur.
Apparemment, toutes les chaines de caractères sont codées unicode
(utf-8) de part le format du fichier.
Non ces chaînes ne sont pas codées en unicode, c'est contradictoire. Ce
que tu vois à l'écran est forcément une représentation dans un codec, et
c'est ce codec que tu dois déclarer à Python. Unicode est la
classification des caractères/glyphes/vecteurs et autres termes mais pas
leur codage. Pour ça il y a UTF-7 (les caractères du genre +XXXX), UTF-8
(qui prend de un à plusieurs octets), UTF-16 et UTF-32 en variantes
petit boutiste et grand boutiste.
Il faut bien lire le lien que j'ai donné dans le message précédent.
Non Encolpe, on n'est pas pressé de passer à UTF-32...
Je pensais que toutes les chaines de caractères seraient codées en
unicode et interprétées comme telles. Mais c'était une erreur.
Apparemment, toutes les chaines de caractères sont codées unicode
(utf-8) de part le format du fichier.
Non ces chaînes ne sont pas codées en unicode, c'est contradictoire. Ce
que tu vois à l'écran est forcément une représentation dans un codec, et
c'est ce codec que tu dois déclarer à Python. Unicode est la
classification des caractères/glyphes/vecteurs et autres termes mais pas
leur codage. Pour ça il y a UTF-7 (les caractères du genre +XXXX), UTF-8
(qui prend de un à plusieurs octets), UTF-16 et UTF-32 en variantes
petit boutiste et grand boutiste.
Il faut bien lire le lien que j'ai donné dans le message précédent.
Non Encolpe, on n'est pas pressé de passer à UTF-32...
Je pensais que toutes les chaines de caractères seraient codées en
unicode et interprétées comme telles. Mais c'était une erreur.
Apparemment, toutes les chaines de caractères sont codées unicode
(utf-8) de part le format du fichier.
Non ces chaînes ne sont pas codées en unicode, c'est contradictoire. Ce
que tu vois à l'écran est forcément une représentation dans un codec, et
c'est ce codec que tu dois déclarer à Python. Unicode est la
classification des caractères/glyphes/vecteurs et autres termes mais pas
leur codage. Pour ça il y a UTF-7 (les caractères du genre +XXXX), UTF-8
(qui prend de un à plusieurs octets), UTF-16 et UTF-32 en variantes
petit boutiste et grand boutiste.
Il faut bien lire le lien que j'ai donné dans le message précédent.
Non Encolpe, on n'est pas pressé de passer à UTF-32...
Je reviens quand même sur mon fichier. Je le déclare comme étant encodé
en utf-8 et je l'enregistre au format utf-8. Donc, quand je mets un
caractère "é" il doit être codé comme tel dans mon fichier où qu'il
soit. Qu'il soit dans un commentaire, dans une chaine de caractères ou
dans une variable (je sais, on n'a pas le droit mais c'est pour
l'explication), il doit être codé de la même façon dans mon fichier.
Donc Python devrait connaître ce caractère comme un "é" où qu'il soit
dans mon fichier. Alors pourquoi ce caractère "é" s'affiche mal lorsque
je le mets dans une chaine de caractère alors qu'il s'affiche bien
lorsque je le mets dans une chaine de caractère unicode ? Ca voudrais
dire que Python interprète le contenu d'une chaine de caractère comme
étant de l'ASCII quelquesoit le codage du fichier. On n'est pas loin du
bug là. Non ?
Nicolas
Je reviens quand même sur mon fichier. Je le déclare comme étant encodé
en utf-8 et je l'enregistre au format utf-8. Donc, quand je mets un
caractère "é" il doit être codé comme tel dans mon fichier où qu'il
soit. Qu'il soit dans un commentaire, dans une chaine de caractères ou
dans une variable (je sais, on n'a pas le droit mais c'est pour
l'explication), il doit être codé de la même façon dans mon fichier.
Donc Python devrait connaître ce caractère comme un "é" où qu'il soit
dans mon fichier. Alors pourquoi ce caractère "é" s'affiche mal lorsque
je le mets dans une chaine de caractère alors qu'il s'affiche bien
lorsque je le mets dans une chaine de caractère unicode ? Ca voudrais
dire que Python interprète le contenu d'une chaine de caractère comme
étant de l'ASCII quelquesoit le codage du fichier. On n'est pas loin du
bug là. Non ?
Nicolas
Je reviens quand même sur mon fichier. Je le déclare comme étant encodé
en utf-8 et je l'enregistre au format utf-8. Donc, quand je mets un
caractère "é" il doit être codé comme tel dans mon fichier où qu'il
soit. Qu'il soit dans un commentaire, dans une chaine de caractères ou
dans une variable (je sais, on n'a pas le droit mais c'est pour
l'explication), il doit être codé de la même façon dans mon fichier.
Donc Python devrait connaître ce caractère comme un "é" où qu'il soit
dans mon fichier. Alors pourquoi ce caractère "é" s'affiche mal lorsque
je le mets dans une chaine de caractère alors qu'il s'affiche bien
lorsque je le mets dans une chaine de caractère unicode ? Ca voudrais
dire que Python interprète le contenu d'une chaine de caractère comme
étant de l'ASCII quelquesoit le codage du fichier. On n'est pas loin du
bug là. Non ?
Nicolas