1
# -*- coding: utf-8 -*-
a='Привет'
print a
b=[]
b.append(a)
print b

这是代码,必须打印Привет

['Привет']

但是当我运行这段代码时,它会打印Привет

['\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82']

不幸的是,它没有打印出我需要的东西。有什么建议怎么做吗?

4

2 回答 2

8

你看到的行为是正常的。您有一个 UTF-8 编码的字节字符串,并且在打印列表时,Python 将始终以最便携的形式将此类字符串显示为 Python 字符串文字。

您真的想使用 Unicode 值,并打印列表中的各个项目:

# -*- coding: utf-8 -*-
a = u'Привет'  # Unicode literal
print a
b = []
b.append(a)
print b[0]     # print individual item

如果您还不知道 Unicode 和字节字符串之间的区别或有关编解码器的任何内容,我敦促您阅读:

在你继续之前。

于 2013-07-08T08:16:32.743 回答
2

打印列表时,Python 将repr在其中的元素上使用该函数。

Python 2.x 中的repr字符串函数将使其 100% 兼容 ascii,以避免终端中的错误编码等问题。

您必须迭代您的列表并打印每个元素。

另外,我建议您unicode对文本使用字符串(如果不是 ascii 则更重要)。

于 2013-07-08T08:15:54.723 回答