Python unicode utf-8 || PRINT正确打印“wąż”,但在List1中,相同的“wąż”字符串打印为'w \ xc4 \ x85 \ xc5 \ xbc'

时间:2016-08-13 12:07:26

标签: python unicode encoding utf-8 character-encoding

我声明了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

但它什么都没改变。它仍然拒绝显示正确的字符。

1 个答案:

答案 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