我尝试了print a_str.decode("utf-8")
,print uni_str
,print uni_str.decode("utf-8")
,print uni_str.encode("utf-8")
。。在
但只有第一个有效。在
>>> print '\xe8\xb7\xb3'.decode("utf-8")
跳
>>> print u'\xe8\xb7\xb3\xe8'
è·³è
>>> print u'\xe8\xb7\xb3\xe8'.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 characters in position 0-3: ordinal not in range(128)
>>> print u'\xe8\xb7\xb3\xe8'.encode("utf-8")
è·³è
我真的很困惑如何用Unicode来显示字符串。如果我有一根这样的绳子:
a=u'\xe8\xb7\xb3\xe8'
,如何打印a
?在
如果你有一根这样的绳子,那它就断了。您需要将其编码为拉丁语-1,以将其转换为具有相同字节值的bytestring,然后解码为UTF-8。在
'\xe8\xb7\xb3'
是用utf8
编码的汉字,因此'\xe8\xb7\xb3'.decode('utf-8')
工作正常,它返回跳
,u'\u8df3'
的unicode值。但是u'\xe8\xb7\xb3'
是一个字面的unicode字符串,它与跳
的unicode不一样。unicode字符串不能是decoded
,它是unicode。 最后,a=u'\xe8\xb7\xb3\xe8'
实际上不是一个有效的unicode字符串。在u'\xe8\xb7\xb3'
来自哪里?另一个功能?在[1]查看第一条评论。在
unicode字符串
u'\xe8\xb7\xb3\xe8'
等效于u'\u00e8\u00b7\u00b3\u00e8'
。您需要的是u'\u8df3'
,它可以在utf8中编码为'\xe8\xb7\xb3'
。在在Python中,unicode是一个UCS-2字符串(构建选项)。因此,
u'\xe8\xb7\xb3\xe8'
是一个由4个16位Unicode字符组成的字符串。在如果你先把它转换成一个字符串(168bUTF字符串):
注意,
'\xe8\xb7\xb3\xe8'
不是有效的utf8字符串,因为最后一个字节'\xe8'
是两字节序列的第一个字符,不能终止utf8字符串。在相关问题 更多 >
编程相关推荐