S'il s'agit d'une liste, il essaiera d'utiliser la fonction str, donc Imprimez sur l'élément ou attribuez un format au type unicode à imprimer. C'est gênant lorsque le nombre d'éléments augmente.
Site référencé: Connaître Python UnicodeEncodeError
# -*- coding:utf-8 -*-
#Vérifiez la valeur par défaut qui apparaît sur le site ci-dessus.
import sys, codecs
#Pour une raison quelconque, celui de la ligne suivante peut ne pas passer. Est-ce un problème de version?#sys.stdout = codecs.EncodedFile(sys.stdout, 'utf_8')
sys.stdout = codecs.lookup(u'utf_8')[-1](sys.stdout)
print "sys.getdefaultencoding() => ",sys.getdefaultencoding()
print "sys.stdout.encoding => ",sys.stdout.encoding
#Test à partir d'ici
alist = [ u"Unicode japonais", u"C'est vrai"]
for st in alist :
print st
print u"{0}{1}".format(*alist)
print map(str,alist)
Ce qui suit est la sortie.
sys.getdefaultencoding() => ascii
sys.stdout.encoding => UTF-8
Unicode japonais
C'est vrai
C'est du japonais Unicode
---------------------------------------------------------------------------
UnicodeEncodeError Traceback (most recent call last)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
202 else:
203 filename = fname
--> 204 __builtin__.execfile(filename, *where)
/Users/yuuichi/test-print/test.py in <module>()
15 print u"{0}{1}".format(*alist)
16
---> 17 print map(str,alist)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)
Recommended Posts