Affichage caractères accentués, 45612 ème édition, 45613 ème sous presse..
6 réponses
Pierre Maurette
Bonjour,
Je veux pouvoir afficher quelques caractères accentués en console, sous
Linux et Windows (et MacOS, mais pas possible de tester), à partir d'un
unique fichier source. J'aimerais également rester en UTF-8 pour le
fichier source.
Jusqu'à maintenant je constatais une incohérence entre ce mes résultats
et ce que je lisais à droite et à gauche. Je laissais courir, et puis
ce matin je me suis énervé sur le problème.
J'ai voulu comprendre pourquoi:
me donnait sous XP:
un b?b?, un b?b?
(et ce que j'attendais sous Linux).
J'ai testé alors:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import sys
print sys.stdout.encoding
print sys.stdin.encoding
print u"un b\xe9b\xe9, un bébé".encode('US-ASCII', 'replace')
print u"un b\xe9b\xe9, un bébé".encode('iso8859-15', 'replace')
print u"un b\xe9b\xe9, un bébé".encode('iso8859-1', 'replace')
print u"un b\xe9b\xe9, un bébé".encode('latin-1', 'replace')
print u"un b\xe9b\xe9, un bébé".encode('cp850', 'replace')
qui me donnera:
US-ASCII
US-ASCII
un b?b?, un b?b?
un bébé, un bébé
un bébé, un bébé
un bébé, un bébé
un b'b', un b'b'
A partir du US-ASCII, je pressens une explication. Mon installation de
XP x64 date de Mathusalem, une préversion francisée ensuite par MUI.
J'ai testé le même code sur un Windows 2000, et j'obtiens ce que
j'attends:
cp850
cp850
un b?b?, un b?b?
un búbú, un búbú
un búbú, un búbú
un búbú, un búbú
un bébé, un bébé
et:
print u"un b\xe9b\xe9, un bébé".encode(sys.stdout.encoding, 'replace')
fonctionne, sys.stdout.encoding étant cp850.
En gros, sous 2000, la console est en cp850 et sys.stdout.encoding est
en cohérence. Sous *mon* XP, la console est en latin-1 (ou iso8859-15,
ou iso8859-1), mais sys.stdout.encoding me renvoie US-ASCII.
D'après vous est-ce bien un problème sur mon XP, ou un truc Python qui
m'échappe ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Cémoi
<snip>
J'ai testé le même code sur un Windows 2000, et j'obtiens ce que j'attends:
cp850 cp850 un b?b?, un b?b? un búbú, un búbú un búbú, un búbú un búbú, un búbú un bébé, un bébé
J'obtiens la même chose que toi avec un XP SP2 tout ce qu'il y a de plus
standard, en version française bien sûr, testé dans une console cmd.exe sous Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)]
D'après vous est-ce bien un problème sur mon XP, ou un truc Python qui m'échappe ?
Si ça t'échappe, alors moi aussi. Désolé .... ;o)
My two cents.
Laurent
<snip>
J'ai testé le même code sur un Windows 2000, et j'obtiens ce que j'attends:
cp850
cp850
un b?b?, un b?b?
un búbú, un búbú
un búbú, un búbú
un búbú, un búbú
un bébé, un bébé
J'obtiens la même chose que toi avec un XP SP2 tout ce qu'il y a de plus
standard, en version française bien sûr, testé dans une console cmd.exe
sous Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
(Intel)]
D'après vous est-ce bien un problème sur mon XP, ou un truc Python qui
m'échappe ?
J'ai testé le même code sur un Windows 2000, et j'obtiens ce que j'attends:
cp850 cp850 un b?b?, un b?b? un búbú, un búbú un búbú, un búbú un búbú, un búbú un bébé, un bébé
J'obtiens la même chose que toi avec un XP SP2 tout ce qu'il y a de plus
standard, en version française bien sûr, testé dans une console cmd.exe sous Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)]
D'après vous est-ce bien un problème sur mon XP, ou un truc Python qui m'échappe ?
Si ça t'échappe, alors moi aussi. Désolé .... ;o)
My two cents.
Laurent
Pierre Maurette
<snip>
J'ai testé le même code sur un Windows 2000, et j'obtiens ce que j'attends:
cp850 cp850 un b?b?, un b?b? un búbú, un búbú un búbú, un búbú un búbú, un búbú un bébé, un bébé
J'obtiens la même chose que toi avec un XP SP2 tout ce qu'il y a de plus
standard, en version française bien sûr, testé dans une console cmd.exe sous Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)]
Merci, et bravo d'avoir "traduit" ma demande. Je m'oriente donc vers une c... une demi paire de génitoires dans mon XP... Je vais soit laisser tomber - pas très gênant - soit voir sur microsoft.public.fr.windowsxp s'il y a une solution simple.
-- Pierre Maurette
<snip>
J'ai testé le même code sur un Windows 2000, et j'obtiens ce que j'attends:
cp850
cp850
un b?b?, un b?b?
un búbú, un búbú
un búbú, un búbú
un búbú, un búbú
un bébé, un bébé
J'obtiens la même chose que toi avec un XP SP2 tout ce qu'il y a de plus
standard, en version française bien sûr, testé dans une console cmd.exe
sous Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
(Intel)]
Merci, et bravo d'avoir "traduit" ma demande. Je m'oriente donc vers
une c... une demi paire de génitoires dans mon XP...
Je vais soit laisser tomber - pas très gênant - soit voir sur
microsoft.public.fr.windowsxp s'il y a une solution simple.
J'ai testé le même code sur un Windows 2000, et j'obtiens ce que j'attends:
cp850 cp850 un b?b?, un b?b? un búbú, un búbú un búbú, un búbú un búbú, un búbú un bébé, un bébé
J'obtiens la même chose que toi avec un XP SP2 tout ce qu'il y a de plus
standard, en version française bien sûr, testé dans une console cmd.exe sous Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)]
Merci, et bravo d'avoir "traduit" ma demande. Je m'oriente donc vers une c... une demi paire de génitoires dans mon XP... Je vais soit laisser tomber - pas très gênant - soit voir sur microsoft.public.fr.windowsxp s'il y a une solution simple.
-- Pierre Maurette
MC
Bonsoir !
Tu as oublié un élément : la police de caractères utilisée. Sur la fenêtre de ta console, fais un clic-droit sur la barre de titre ; puis choisi "propriétés" ; onglet "police".
Attn, après un changement de police, il faut relancer ton script, sans fermer la fenêtre.
-- @-salutations
Michel Claveau
Bonsoir !
Tu as oublié un élément : la police de caractères utilisée.
Sur la fenêtre de ta console, fais un clic-droit sur la barre de titre
; puis choisi "propriétés" ; onglet "police".
Attn, après un changement de police, il faut relancer ton script, sans
fermer la fenêtre.
Tu as oublié un élément : la police de caractères utilisée. Sur la fenêtre de ta console, fais un clic-droit sur la barre de titre ; puis choisi "propriétés" ; onglet "police".
Attn, après un changement de police, il faut relancer ton script, sans fermer la fenêtre.
-- @-salutations
Michel Claveau
Pierre Maurette
Bonsoir !
Tu as oublié un élément : la police de caractères utilisée. Sur la fenêtre de ta console, fais un clic-droit sur la barre de titre ; puis choisi "propriétés" ; onglet "police".
Attn, après un changement de police, il faut relancer ton script, sans fermer la fenêtre.
Il est possible que ça puisse jouer sur des trucs "étranges". Mais je ne m'intéresse qu'à "quelques caractères accentués". Je pense que le point nodal de mon problème est le fait que sys.stdout.encoding me renvoie US-ASCII, et que le "bon" charset est latin-1, ou iso8859-15, ou iso8859-1.
-- Pierre Maurette
Bonsoir !
Tu as oublié un élément : la police de caractères utilisée.
Sur la fenêtre de ta console, fais un clic-droit sur la barre de titre ; puis
choisi "propriétés" ; onglet "police".
Attn, après un changement de police, il faut relancer ton script, sans fermer
la fenêtre.
Il est possible que ça puisse jouer sur des trucs "étranges". Mais je
ne m'intéresse qu'à "quelques caractères accentués".
Je pense que le point nodal de mon problème est le fait que
sys.stdout.encoding me renvoie US-ASCII, et que le "bon" charset est
latin-1, ou iso8859-15, ou iso8859-1.
Tu as oublié un élément : la police de caractères utilisée. Sur la fenêtre de ta console, fais un clic-droit sur la barre de titre ; puis choisi "propriétés" ; onglet "police".
Attn, après un changement de police, il faut relancer ton script, sans fermer la fenêtre.
Il est possible que ça puisse jouer sur des trucs "étranges". Mais je ne m'intéresse qu'à "quelques caractères accentués". Je pense que le point nodal de mon problème est le fait que sys.stdout.encoding me renvoie US-ASCII, et que le "bon" charset est latin-1, ou iso8859-15, ou iso8859-1.
-- Pierre Maurette
Bruno Piguet
[...]
Je pense que le point nodal de mon problème est le fait que sys.stdout.encoding me renvoie US-ASCII, et que le "bon" charset est latin-1, ou iso8859-15, ou iso8859-1.
Ou probablement cp1252, identique à iso8859-1 pour le "è", mais qui utilise des choses entre x80 et x9F (interdit chez les ISO). Si tu obtiens un ¤ en x80 et un ½ en x9C, c'est sûr, c'est du cp1252.
Bruno.
[...]
Je pense que le point nodal de mon problème est le fait que
sys.stdout.encoding me renvoie US-ASCII, et que le "bon" charset est
latin-1, ou iso8859-15, ou iso8859-1.
Ou probablement cp1252, identique à iso8859-1 pour le "è", mais qui
utilise des choses entre x80 et x9F (interdit chez les ISO).
Si tu obtiens un ¤ en x80 et un ½ en x9C, c'est sûr, c'est du cp1252.
Je pense que le point nodal de mon problème est le fait que sys.stdout.encoding me renvoie US-ASCII, et que le "bon" charset est latin-1, ou iso8859-15, ou iso8859-1.
Ou probablement cp1252, identique à iso8859-1 pour le "è", mais qui utilise des choses entre x80 et x9F (interdit chez les ISO). Si tu obtiens un ¤ en x80 et un ½ en x9C, c'est sûr, c'est du cp1252.
Bruno.
Méta-MCI \(MVP\)
Bonjour !
Il est possible que ça puisse jouer sur des trucs "étranges".
Naaaan ! ça "joue" beaucoup plus souvent que cela. Un simple essaie te l'aurait confirmé. Pour moi, la police joue pour des caractères tels que éèàôï ...
Sinon, pour les cas tordus/étranges, il faut savoir que Windows est, par défaut, en cp850 ; mais si nécessaire, il bascule, à la volée, en UTF16. Il y a un moyen simple de vérifier cela : créer un fichier avec un nom comportant des caractères chinois, grecs ou cyrilliques. Ensuite, si on tape DIR [Entrée], on voit tout correctement, alors que cp850 -seul- n'est pas capable de gérer l'affichage, ce qui prouve le mode mixte.
@+
MCI
Bonjour !
Il est possible que ça puisse jouer sur des trucs "étranges".
Naaaan ! ça "joue" beaucoup plus souvent que cela. Un simple essaie te
l'aurait confirmé.
Pour moi, la police joue pour des caractères tels que éèàôï ...
Sinon, pour les cas tordus/étranges, il faut savoir que Windows est, par
défaut, en cp850 ; mais si nécessaire, il bascule, à la volée, en UTF16.
Il y a un moyen simple de vérifier cela : créer un fichier avec un nom
comportant des caractères chinois, grecs ou cyrilliques. Ensuite, si on
tape DIR [Entrée], on voit tout correctement, alors que cp850 -seul-
n'est pas capable de gérer l'affichage, ce qui prouve le mode mixte.
Il est possible que ça puisse jouer sur des trucs "étranges".
Naaaan ! ça "joue" beaucoup plus souvent que cela. Un simple essaie te l'aurait confirmé. Pour moi, la police joue pour des caractères tels que éèàôï ...
Sinon, pour les cas tordus/étranges, il faut savoir que Windows est, par défaut, en cp850 ; mais si nécessaire, il bascule, à la volée, en UTF16. Il y a un moyen simple de vérifier cela : créer un fichier avec un nom comportant des caractères chinois, grecs ou cyrilliques. Ensuite, si on tape DIR [Entrée], on voit tout correctement, alors que cp850 -seul- n'est pas capable de gérer l'affichage, ce qui prouve le mode mixte.