在ipython(python 2.7)中使用这个最小的例子:
from matplotlib import pylab
unic = u'\xb0'
unicen = unic.encode('utf-8')
plt.plot([1,2],[3,4])
plt.xlabel(r'$\Delta$ [%s]'%(unicen), size='xx-large')
我收到一条很长的错误消息,结尾于:
UnicodeDecodeError:' ascii'编解码器不能将字节0xc2解码到位 10:序数不在范围内(128)
如果我打印unic,unicen或str(unicen),一切都很好,这意味着matplotlib似乎无法处理编码。 str(unic)导致相同的错误,但unic.encode(' utf-8')确实在打印消息中处理它。
我已经开始使用添加# - - 编码:utf-8 - - 和unichr(0xB0),然后尝试了我找到的所有其他解决方案。实际上,uni.encode()是另一种失败的解决方案。我做错了什么?
---------------------------------- EDIT --------- ---------------------
下面的答案是解决我上面的问题,但是当我尝试使用乳胶时发生了相同的错误,因此看起来乳胶和matplotlib不能正常协同工作。
这里导致此错误的简单脚本(已通过以下建议更正):
from matplotlib import pylab
unic = u'\xb0'
plt.plot([1,2],[3,4])
plt.rc ('text', usetex=True)
plt.rc ('font', family='serif')
plt.rc ('font', serif='Computer Modern Roman')
plt.xlabel(u'$\Delta$ [%s]'%(unic), size='xx-large')