关于Python解码方法的困惑

时间:2014-11-20 22:56:03

标签: python decode encode

我试图在python中运行命令u'\xe1'.decode("utf-8"),我收到此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 0: ordinal not in range(128)

为什么当我将utf-8作为第一个参数传递时,我试图解码ascii?除此之外,有什么方法可以从á获取角色u'\xe1'并将其保存在字符串中?

1 个答案:

答案 0 :(得分:1)

decode将获取一个字符串并将其转换为unicode(例如:"\xb0".decode("utf8") ==> u"\xb0"

encode将使用unicode并将其转换为字符串(例如:u"\xb0".encode("utf8") ==> "\xb0"

与字符串的呈现无关......它主要是内部表示

尝试

print u"\xe1"

(你的终端将需要支持unicode(空闲将工作... dos终端不是那么多))

>>> print u"\xe1"
á
>>> print repr(u"\xe1".encode("utf8"))
'\xc3\xa1'
>>> print repr("\xc3\xa1".decode("utf8"))
u'\xe1'