更改 Python 的默认编码?

新手上路,请多包涵

当我从控制台运行我的应用程序时,我遇到了许多 Python 的“无法编码”和“无法解码”问题。但是在 Eclipse PyDev IDE 中,默认字符编码设置为 UTF-8 ,我很好。

我四处寻找设置默认编码,有人说Python在启动时删除了 sys.setdefaultencoding 功能,我们不能使用它。

那么最好的解决方案是什么?

原文由 Ali Nadalizadeh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 687
2 个回答

这是一个更简单的方法(hack),它可以返回从 — 中删除的 sys setdefaultencoding() 函数:

 import sys
# sys.setdefaultencoding() does not exist, here!
reload(sys)  # Reload does the trick!
sys.setdefaultencoding('UTF8')

(Python 3.4+ 的注意事项: reload()importlib 库中。)

但是 ,这样做并不安全:这显然是一种 hack,因为当 Python 启动时, sys.setdefaultencoding() 被故意从 sys 中删除。重新启用它并更改默认编码 可能会破坏依赖 ASCII 作为默认编码的代码(此代码可以是第三方的,这通常会使修复它变得不可能或很危险)。

PS:这个 hack 似乎不再适用于 Python 3.9。

原文由 Eric O Lebigot 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果在尝试通过管道/重定向脚本输出时出现此错误

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)

只需在控制台中导出 PYTHONIOENCODING,然后运行您的代码。

export PYTHONIOENCODING=utf8

原文由 iman 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题