# -*- coding: utf-8 -*-
a='Привет'
print a
b=[]
b.append(a)
print b
这是代码,必须打印Привет
['Привет']
但是当我运行这段代码时,它会打印Привет
['\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82']
不幸的是,它没有打印出我需要的东西。有什么建议怎么做吗?
# -*- coding: utf-8 -*-
a='Привет'
print a
b=[]
b.append(a)
print b
这是代码,必须打印Привет
['Привет']
但是当我运行这段代码时,它会打印Привет
['\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82']
不幸的是,它没有打印出我需要的东西。有什么建议怎么做吗?
你看到的行为是正常的。您有一个 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 和字节字符串之间的区别或有关编解码器的任何内容,我敦促您阅读:
每个软件开发人员绝对、绝对必须了解 Unicode 和字符集(没有任何借口!)作者:Joel Spolsky
Python Unicode HOWTO
Ned Batchelder 的实用 Unicode
在你继续之前。
打印列表时,Python 将repr
在其中的元素上使用该函数。
Python 2.x 中的repr
字符串函数将使其 100% 兼容 ascii,以避免终端中的错误编码等问题。
您必须迭代您的列表并打印每个元素。
另外,我建议您unicode
对文本使用字符串(如果不是 ascii 则更重要)。