【发布时间】:2012-11-03 14:40:05
【问题描述】:
我正在制作一个脚本,要求我将编码格式更改为“UTF-8”。我在 Stachoverflow 上找到了一个主题说我可以使用:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
它在 OSX 10.8(可能更早的版本)中运行良好,但在 Windows XP 和 Windows 7(也可能是 Vista 和 8)中,它会禁用解释器中的所有反馈。 脚本仍在运行,但我无法打印任何内容或查看是否有任何问题。
有没有办法修补当前代码,或者是否有其他方法可以更改编码?
【问题讨论】:
-
“禁用所有反馈”到底是什么意思?
-
可能是因为
cmd.exe默认不使用utf-8? -
对我来说效果很好
-
According to the Python developers,文学硕士。 Lemburg 和 Martin 诉 Löwis,更改
setdefaultencoding不是解决任何问题的受支持方式。它会使您的 Python 脚本与大多数其他 Python 用户不兼容,并可能导致意外行为或 moji-bake。 -
没有简单的选择。 Python3 将迫使程序员更加关注
bytes(即Python2 中的strs)和str(或Python2 中所谓的unicode)。 Python3 不会使用ascii编码在两者之间进行隐式转换,而是通常会引发异常。因此,从长远来看,了解the absolute minimum needed to deal with unicode 以及对how to deal with unicode in Python 的一些实用建议会有所回报。