print u'\xe4\xf6\xfc'.encode('utf-8')
print unicode(u'\xe4\xf6\xfc')回溯:
盲枚眉
Traceback (most recent call last):
File "D:\zjm_code\a.py", line 6, in <module>
print unicode(u'\xe4\xf6\xfc')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)python外壳
>>>u"äöü".encode('utf-8')
Unsupported characters in input发布于 2010-01-08 02:37:49
编码错误:
print unicode(u'\xe4\xf6\xfc')unicode()调用在这里什么也不做,因为它的参数已经是unicode对象了。然后,print尝试输出该unicode对象,为此,print希望将其转换为终端编码中的字符串。但是python似乎不知道您的终端使用哪种编码方式,因此可以使用uses的“安全”替代方案。
由于u'\xe4\xf6\xfc'不能用Ascii表示,这将导致编码错误。
Unicode,编码和解码:
通常,encode()将unicode对象转换为具有特定字符编码的字符串,例如UTF-8或ISO-8859-1。每个unicode代码点都被转换为该编码中的字节序列:
>>> u'\xe4\xf6\xfc'.encode('utf-8')
'\xc3\xa4\xc3\xb6\xc3\xbc'相反的是decode(),它将特定编码中的字符串转换为包含相应unicode代码点的unicode对象。
>>> '\xc3\xa4\xc3\xb6\xc3\xbc'.decode('utf-8')
u'\xe4\xf6\xfc'印刷:
带有string参数的print只打印该字符串的原始字节。如果这导致期望的输出,则取决于终端的字符编码。
>>> print '\xc3\xa4\xc3\xb6\xc3\xbc' # utf-8 encoding on utf-8 terminal
äöü
>>> print '\xe4\xf6\xfc' # same encoded as latin-1
���当给定unicode参数时,print首先尝试在终端编码中对unicode对象进行编码。这只有在python猜测终端的正确编码并且编码实际上可以表示unicode对象的所有字符时才有效。否则,编码会引发异常,或者输出包含错误的字符。
>>> print u'\xe4\xf6\xfc' # it correctly assumes a utf-8 terminal
äöühttps://stackoverflow.com/questions/2025041
复制相似问题