我声明了utf-8编码,当我'w\xc4\x85\xc5\xbc'
或其他不常见的字符时,终端正确打印出“wąż”。
但是当我有一个带有字符串“wąż”的列表并打印整个列表时,我得到#!/usr/bin/env python
# -*- coding: utf-8 -*-
list1 = ['wąż']
。
代码:
>>>print list1
['w\xc4\x85\xc5\xbc']
但是当我打印整个list1时:
>>>print list1[0]
>>>print "wąż"
wąż
wąż
当我打印list1 [0]或只是打印字符串“wąż”时,它会正确打印:
[x.encode('utf-8') for x in list1]
一小时后......
好吧所以我尝试使用ascii
对utf-8中的列表进行编码,但这给我一个错误: UnicodeDecodeError:'ascii'编解码器无法解码位置1中的字节0xc4:序号不在范围(128)。
所以我使用下面的代码检查了我当前的编码,结果发现我有import sys
reload(sys)
print sys.getdefaultencoding()
。
utf-8
所以我使用sys.setdefaultencoding("utf-8")
将编码更改为utf-8
并正确打印出我现在>>>[x.encode('utf-8') for x in list1]
的内容。
所以我再次选择:
>>>print list1
['w\xc4\x85\xc5\xbc']
gather
但它什么都没改变。它仍然拒绝显示正确的字符。
答案 0 :(得分:0)
试试这个:
>> meh = u'wąż'.encode('utf-8')
>> print meh.decode('utf-8')
wąż
所以你基本上是根据指定的编码对unicode进行编码/解码。
这里描述得很好:https://docs.python.org/2/howto/unicode.html#the-unicode-type