在Python 2.7x中调用u'\ 1234'.decode('utf-8')是什么意思?

Tim*_*der 1 python unicode encoding utf-8 python-2.7

今天早些时候,一位同事问我,我无法找到合理的答案.S/O似乎有一些接近的答案,但我无法找到具体回答的东西.

如果我在64位Ubuntu 12.04上运行2.7x解释器,我得到:

>>> u'\u1234'.decode('utf-8')
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/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'\u1234' in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

关于该主题Python文档表明Python将Unicode字符串表示为16或32位整数.当用utf-8解码时,Python是否会尝试读取那些用utf-8编码的8位字符的整数?如果是这样,为什么错误是UnicodeEncodeError而不是UnicodeDecodeError?

我希望能更好地理解这一点.在Unicode字符串上调用decode时采取了哪些步骤?使用已经从utf-8编码解码的utf-8解码字符串的含义我不清楚.

Dan*_*man 6

这是一个Python 2疣.上的Unicode字符串主叫解码第一编码使用它的默认编码,以指定的编码重新解码之前.由于默认编码通常是ASCII,因此您会看到错误.