【问题标题】:How to check what default encoding is used by Python's open() function?如何检查 Python 的 open() 函数使用什么默认编码?
【发布时间】:2021-08-02 10:49:53
【问题描述】:

我打算在我的机器上设置环境变量 PYTHONUTF8 = 1,如this question 中所述,以确保 open() 函数使用 UTF8 作为默认编码。但我也想确保我的代码不会在另一台机器上静默中断。所以我希望我的脚本包含一个检查:它应该检查 open() 使用什么编码,如果不是 UTF8 则发出警告消息。我的脚本如何检查?

【问题讨论】:

  • 为什么不明确并确保在您的程序中完成的所有open 调用都包含参数encoding="utf8"
  • 致电sys.getfilesystemencoding() docs.python.org/3/library/sys.html#sys.getfilesystemencodinglocale.getpreferredencoding() docs.python.org/3/library/… 并检查他们是否返回'UTF-8'
  • 你应该明确编码(“显式优于隐式”是 Python 的一个口头禅)。但简而言之:除了 Windows 之外的所有现代平台都默认使用 UTF-8。 Windows 仍然使用本地编码(取决于语言)。

标签: python python-3.x encoding utf-8


【解决方案1】:

来自 Python open 文档:

在文本模式下,如果未指定 encoding,则使用的编码取决于平台:调用locale.getpreferredencoding(False) 以获取当前的语言环境编码。

但如果您不希望您的代码“在另一台机器上静默中断”,只需指定您想要的编码,不要依赖环境变量和默认值。

【讨论】:

    猜你喜欢
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2020-04-12
    相关资源
    最近更新 更多