Bonjour,
Je m'arrache un peu (beaucoup) les cheveux sur python et l'unicode et j'aurai besoin d'un petit coup de main.

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
# -*- coding: utf-8 -*-
print u'é'
(Difficile de faire plus simple, vous en conviendrez )

et voici les différentes exécutions que j'en ai faites :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
$ python2.6 test.py 
é
$ python2.6 test.py > /dev/null
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    print u'é'
UnicodeEncodeError: 'ascii' codec cant encode character u'\xe9' in position 0: ordinal not in range(128)
$ python3.1 test.py 
  File "test.py", line 2
    print u'é'
          ^
SyntaxError: invalid syntax
Donc mes questions sont les suivantes :
* Pourquoi python utilise un encodage différent suivant qu'on redirige la sortie ou pas et comment fait-il pour le savoir ?
* Pourquoi ce script simplissime, qui est passé pourtant par 2to3 provoque une erreur de syntaxe avec python 3 ?