您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将python的stdout重定向到文件失败,并出现UnicodeEncodeError

将python的stdout重定向到文件失败,并出现UnicodeEncodeError

既然还没有人跳进来,这就是我的镜头。在写入控制台时,Python会设置stdout的编码,但在写入文件时,Python不会设置。该脚本显示了问题

import sys

msg = {'text':u'\2026'}
sys.stderr.write('default encoding: %s\n' % sys.stdout.encoding)
print msg['text']

运行显示错误

$ python bad.py>/tmp/xxx
default encoding: None
Traceback (most recent call last):
  File "fix.py", line 5, in <module>
    print msg['text']
UnicodeEncodeError: 'ascii' codec can't encode character u'\x82' in position 0: ordinal not in range(128)

添加编码

import sys

msg = {'text':u'\2026'}
sys.stderr.write('default encoding: %s\n' % sys.stdout.encoding)
encoding = sys.stdout.encoding or 'utf-8'
print msg['text'].encode(encoding)

问题解决

$ python good.py >/tmp/xxx
default encoding: None
$ cat /tmp/xxx
6
python 2022/1/1 18:17:03 有590人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶