今天早些时候,一位同事问我,我无法找到合理的答案.S/O似乎有一些接近的答案,但我无法找到具体回答的东西.
如果我在64位Ubuntu 12.04上运行2.7x解释器,我得到:
>>> u'\u1234'.decode('utf-8') Traceback (most recent call last): File "", line 1, in 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)
关于该主题的Python文档表明Python将Unicode字符串表示为16或32位整数.当用utf-8解码时,Python是否会尝试读取那些用utf-8编码的8位字符的整数?如果是这样,为什么错误是UnicodeEncodeError而不是UnicodeDecodeError?
我希望能更好地理解这一点.在Unicode字符串上调用decode时采取了哪些步骤?使用已经从utf-8编码解码的utf-8解码字符串的含义我不清楚.