我有一个python脚本,从twitter API抓取一堆最近的推文并将它们转储到屏幕上。它运行良好,但是当我尝试将输出定向到文件时发生了一些奇怪的事情并且print语句导致异常:
> ./tweets.py > tweets.txt
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2018' in position 61: ordinal not in range(128)
据我所知,问题在于其中一条推文中的UTF-8字符无法很好地转换为ASCII,但是将输出转储到文件的简单方法是什么?我是否在python脚本中修复此问题,或者有没有办法在命令行强制它?
BTW,脚本是用Python2编写的。答案 0 :(得分:3)
不修改脚本,只需设置环境变量PYTHONIOENCODING=utf8
,Python就会在重定向到文件时假设编码。
参考文献:
https://docs.python.org/2.7/using/cmdline.html#envvar-PYTHONIOENCODING https://docs.python.org/3.3/using/cmdline.html#envvar-PYTHONIOENCODING
答案 1 :(得分:0)
您可能需要使用.encode('utf-8')
在你的python文件中将其附加到第一行
# -*- coding: utf-8 -*-
如果您的脚本文件是独立运行的,请将其附加到第二行
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
以下是文件:PEP 0263