Voici le code:
#!/usr/bin/python
# -*- coding: utf8 -*-
import sys
rep1="zoo"
rep2=u"zéro"
print ("%s" % rep1).encode(sys.stdout.encoding,'replace')
print ("%s" % rep2).encode(sys.stdout.encoding,'replace')
Quand je fais "python fichier.py", cela se passe bien. Par contre, quand je fais, "python fichier.py | grep a", j'ai le message d'erreur suivant:
Traceback (most recent call last):
File "fichier.py", line 9, in
print ("%s" % rep1).encode(sys.stdout.encoding,'replace')
TypeError: encode() argument 1 must be string, not None
Là, je suis un peu perdu ...
Je débute un peu en python et j'avoue avoir un peu de mal avec l'encodage (str vs unicode).
Merci de votre aide.
A bientôt.
# Excès de zèle
Posté par Jean B . Évalué à 2.
#!/usr/bin/python
# -*- coding: utf8 -*-
import sys
rep1="zoo"
rep2="zéro"
print ("%s" % rep1)
print ("%s" % rep2)
Comme ça ça marche ...
Tu déclare un encodage en utf-8 tu n'a donc tes multiples conversions explicites font tout foirer.
[^] # Re: Excès de zèle
Posté par sifu . Évalué à 1.
En fait, je m'étais inspiré d'éléments que j'avais trouvé ici http://sebsauvage.net/python/charsets_et_encoding.html
Par contre, j'avoue toujours avoir un peu de mal s'il est préférable de gérer les chaînes en unicode ou en str au sein de son programme.
Merci.
# Ce que veut dire l'erreur
Posté par 태 (site web personnel) . Évalué à 2.
[^] # Re: Ce que veut dire l'erreur
Posté par sifu . Évalué à 1.
En fait, je débute en Python et j'aimerais dès le départ traiter correctement cette histoire d'encodage qui pour l'instant me déstabilise un peu !
Du coup, est ce qu'il est préférable d'utiliser des chaînes str ou unicode en interne dans le code ?
A bientôt.
[^] # Re: Ce que veut dire l'erreur
Posté par 태 (site web personnel) . Évalué à 2.
[^] # Re: Ce que veut dire l'erreur
Posté par sifu . Évalué à 1.
A bientôt.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.