You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下Python如何无需指定编码正确读文本文件或优化写入?

实现类似记事本的自动编码识别读取功能(Python)

我了解到无法准确判定文本编码,但像记事本这类程序却能正确读取UTF-8编码的文件,希望在Python中实现同样的效果。

Python的open函数无法做到这一点,Python 3.11文档指出其默认使用系统本地编码,我的机器上为cp1252,该行为不依赖文件中的BOM或其他元数据。

以下代码在Python 3.7、3.10和3.11版本中表现一致:

fname = "tmpWindowsOut.txt"
with open(fname, "w", encoding="utf-8") as f:
    # 如果open里不指定encoding,这里会抛出臭名昭著的UnicodeEncodeError:
    # UnicodeEncodeError: 'charmap' codec can't encode character '\u03b2' in position 1: character maps to <undefined>
    f.write("βKHα") 

with open(fname, "r") as f:
    print(f.read()) # 输出 βKHα

# 用记事本打开这个文件却能显示正确内容

我知道可以通过给open调用传入encoding参数来正确读取文件,但我的问题并非如何读取已知为UTF-8编码的文件。我想实现以下任一目标:

  • 无需指定编码即可正确完成读取操作
  • 调整写入操作,使第一个目标更容易(甚至可行)

内容的提问来源于stack exchange,提问作者julaine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:33:17