解决Python2.7画三维图像遇到的编码问题

matplotlib是一个用于创建出版质量图表的桌面绘图包,主要用于2D方面。因此在用python绘制三维图像时,需要引用from mpl_toolkits.mplot3d import Axes3D

但是在执行程序的时候发现编码问题出错‘UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-5: ordinal not in range(128)’。这个编码问题之前遇到过(可参加之前这篇博客

于是我在代码开始处添加了代码

import sys
reload(sys)   
sys.setdefaultencoding('utf8') 

结果又出现了新的问题:画出的图像一闪而过,经过网上查询资料终于发现问题所在。
原来是因为IDLE作为一个GUI Shell环境,在启动初始化过程中,会设置特定的标准输入、标准输出和标准错误输出,而手动执行了reload(sys)以后,sys模块的这三个变量将会被重置,导致输出无法显示在IDLE。

因此解决办法就是在执行‘reload(sys)‘之前,先把三个模块保留起来,然后在设置完编码后重新设置,代码如下:

import sys
stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr
reload(sys)   
sys.setdefaultencoding('utf8') 
sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde

至此,就完全解决问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值