[codage][console] différence entre print et sys.stdout.write
Bonjour à tous,
J'ai un objet bloc, s'affichant sous forme de chaîne accentuée au format iso-8859-15, que je veux afficher en console.
Apparemment, pour faire ça correctement, il faut que je convertisse mes chaînes en UTF8.
Cependant, ça ne fonctionne pas pareillement selon la méthode employée.
Mes deux méthodes :
Code:
1 2 3 4
|
print bloc.__str__().decode("iso-8859-1")
sys.stdout.write(bloc.__str__().decode("iso-8859-1")) |
Méthode print
La méthode print fonctionne, mais seulement avec iso-8859-1 (là, le caractère 'oe' s'affichera donc '1/2').
Avec .decode("iso-8859-15"), j'obtiens l'erreur :
Code:
1 2
|
UnicodeEncodeError : 'charmap' codec can't encode character u'\u0153' in position 28: character maps to <undefined> |
Il s'agit du caractère 'oe' qu'il ne peut apparemment reconnaître...
Méthode sys.stdout.write
Avec la méthode sys.stdout.write, rien ne fonctionne, même en iso-8859-1.
Là, j'obtiens l'erreur :
Code:
1 2
|
UnicodeEncodeError: 'ascii' codec can't encode character u'\xc9' in position 19: ordinal not in range(128) |
Quelqu'un a-t-il mieux à me proposer ?
Merci d'avance.