Python脚本重定向其输出时的编码问题

python有一个比较烦的问题是,同一段程序,里面有print语句,直接运行时没有问题,一旦将其输出设了个重定向,这个脚本就不正常了,报告UnicodeEncodeError

究其原因,是Python感知到输出到控制台时,会从控制台取当前编码;而重定向后Python程序无法得知写那个文件该用哪个编码(不过为啥不用控制台的 值?), 缺省就用了ascii (准确地说,是系统缺省编码 sys.getdefaultencoding(),可以在sitecustomize模块里修改。而python3将缺省编 码改为utf-8了) 。 python - UnicodeDecodeError when redirecting to file - Stack Overflow

解决办法有两个:
 
一个是刚才提到的修改sitecustomize模块(缺省不存在,特意留给用户定制的),在里面调用 sys.setdefaultcoding('xxxx')——这个函数python在import site之后就没有了,应用程序的python代码里是没法调的

方法二是shell里设置环境变量 PYTHONIOENCODING,设成utf_8或者gbk都可以(只要字符集够) PrintFails - PythonInfo Wiki
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值