如何在有UTF-8字符时将输出定向到文件?
我有一个Python脚本,它可以从Twitter的API获取一些最近的推文,并把它们显示在屏幕上。这个脚本运行得很好,但当我试图把输出保存到一个文件时,出现了一些奇怪的情况,导致一个打印语句抛出了异常:
> ./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脚本里修复这个问题,还是可以在命令行里处理一下?
顺便说一下,这个脚本是用Python2写的。
2 个回答
0
你可能需要用 .encode('utf-8')
来编码这个unicode对象。
在你的Python文件的第一行加上这个。
# -*- coding: utf-8 -*-
如果你的脚本文件是独立运行的,那就把它加到第二行。
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
这里有个文档: PEP 0263
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