奇怪的Python字符编码现象

时间:2015-02-24 14:44:53

标签: python unicode utf-8 matplotlib

我一直试图让matplotlib正确显示£/€符号作为轴标签,并最终发现一些令人困惑的东西,我希望有人在这里可能会有所启发。

如果我在python控制台中输入以下内容:unicode('£','utf-8'),我收到此错误:UnicodeDecodeError: 'utf8' codec can't decode byte 0xa3 in position 0: invalid start byte

但是,如果我用这个作为我唯一的行来执行一个python脚本,我会将'£'符号打印回给我(这最终是我最终在我的情节中得到'£'符号的方式)。 / p>

print unicode('£','utf-8')

有什么想法吗?感谢您提供的任何见解!

编辑:

两个脚本及每个脚本的输出:

import matplotlib.pyplot as plt

plt.plot( [ 1, 2, 3 ] )
ax = plt.gca()
ax.set_ylabel( unicode( '£', 'utf-8' ) )
plt.show()

输出:

Output1

import matplotlib.pyplot as plt

plt.plot( [ 1, 2, 3 ] )
ax = plt.gca()
ax.set_ylabel( u'£' )
plt.show()

输出:

Output2

编辑2:

#coding: utf8添加到我的第二个示例代码中不会改变:

#coding: utf8

import matplotlib.pyplot as plt

plt.plot( [ 1, 2, 3 ] )
ax = plt.gca()
ax.set_ylabel( u'£' )
plt.show()

输出:

Output3

2 个答案:

答案 0 :(得分:0)

尝试使用unicode文字u'£'

答案 1 :(得分:0)

您需要指定源文件的编码。在python脚本的顶部添加以下行:

#coding: utf8 

信息:PEP 263