我有以下用python 2.7编写的代码
# -*- coding: utf-8 -*-
import sys
_string = "años luz detrás"
print _string.encode("utf-8")
这会引发以下错误:
print _string.encode("utf-8")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
任何帮助表示感谢,提前谢谢
答案 0 :(得分:6)
在u
"
>>> _string = u"años luz detrás"
>>> print _string.encode("utf-8")
años luz detrás
这样做。
答案 1 :(得分:3)
在Python 2中,字符串文字""
创建一个字节串。然后在字节串上调用.encode("utf-8")
,在执行ascii
之前,Python首先尝试使用默认字符编码(.encode("utf-8")
)将其解码为Unicode字符串。
u""
创建Unicode字符串。它会将UnicodeDecodeError修复为@Bleeding Fingers suggested。
# -*- coding: utf-8 -*-
print u"años luz detrás"
如果重定向stdout,则可能导致UnicodeEncodeError
。在这种情况下设置PYTHONIOENCODING
环境变量。