【问题标题】:How to make Python use UTF8 by default with `open()` on Windows?如何使 Python 在 Windows 上使用 `open()` 默认使用 UTF8?
【发布时间】:2018-11-17 04:51:03
【问题描述】:

我的代码在 UTF8 编码的文本文件上使用 open("file.txt")。 但是,这在 Windows 上会中断,因为默认情况下它将使用 cp1252

如何在不更改代码的情况下使代码正常工作?

我已经看到并尝试过PYTHONIOENCODINGsys.setdefaultencodingchcp 65001 解决方案,但它们都没有任何作用。

【问题讨论】:

标签: python


【解决方案1】:

您可以覆盖 open() 内置函数并将其替换为您自己的,默认情况下使用 utf-8:

使用以下函数创建文件custom_open.py

import builtins

def open(*args, **kwargs):
    kwargs["encoding"] = "utf8"
    return builtins.open(*args, **kwargs)

现在,您可以将from custom_open import open 添加到现有文件中,open() 函数将被覆盖,从而有效地以 UTF-8 格式打开所有文件。的确,它涉及更改现有代码,但您只需要在现有文件中添加一个导入即可使其工作。

如果您使用的是 Python 2,则应将 builtins 模块替换为 __builtin__

import __builtin__

def open(*args, **kwargs):
    kwargs["encoding"] = "utf8"
    return __builtin__.open(*args, **kwargs)

【讨论】:

    【解决方案2】:

    在 open() 函数中使用编码键值参数作为:-

    file_descriptor = open("file.txt", encoding="utf8")
    

    【讨论】:

    • 是的,但我的意思是理想情况下更改现有代码。
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 2011-05-23
    • 2021-08-02
    • 2013-05-05
    • 2020-11-28
    • 2015-12-27
    • 1970-01-01
    • 2014-08-24
    相关资源
    最近更新 更多