【发布时间】:2018-12-04 04:43:34
【问题描述】:
我从 Python 2.7 切换到 Python 3.6。
我有处理一些非英语内容的脚本。
我通常通过 Cron 和终端运行脚本。
我的 Python 2.7 脚本中有 UnicodeDecodeError,我通过这个解决了。
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
现在在 Python 3.6 中,它不起作用。我有像print("Here %s" % (myvar)) 这样的打印语句,它会引发错误。我可以通过将其替换为myvar.encode("utf-8") 来解决此问题,但我不想写每个打印语句。
我在终端中执行了PYTHONIOENCODING=utf-8,但仍然存在这个问题。
有没有更简洁的方法来解决 Python 3.6 中的UnicodeDecodeError 问题?
有没有办法告诉 Python3 以 utf-8 格式打印所有内容?就像我在 Python2 中所做的那样?
【问题讨论】:
-
非英文文件本身是否以 UTF-8 正确编码?
-
@EdwardMinnix 我正在从各种 Hewbrew/Korean 站点抓取数据,因此数据并不总是干净的。
-
@usr2564301 有没有办法告诉 Python3 以 utf-8 打印所有内容?就像我在 Python2 中所做的那样?
-
通常您的终端定义了一个编码,Python 使用该编码来设置其文件对象的编码 (
sys.stdout)。你能提供你机器上sys.stdout.encoding的设置吗? -
我认为这是问题的根源。你用的是什么奇怪的终端?在 Unix-ish 环境中,您可以将 env var
TERM设置为xterm或类似的东西。LANG变量也可能会产生影响。
标签: python python-3.x linux ubuntu unicode