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

Win10下Python3.6写入UTF-8文件被识别为ANSI如何修复?

问题分析与解决方案

我之前也踩过类似的坑,咱们来捋清楚问题根源和解决办法:

为什么会出现编码识别差异?

核心原因在于**UTF-8 BOM(字节顺序标记)**的存在与否:

  • 当你写入的内容全是ASCII范围内的字符时,Python用encoding='utf-8'写入的文件不会自动添加UTF-8 BOM。EditPlus这类编辑器对编码的判断比较“保守”——没有BOM的纯ASCII文件,它会默认识别为ANSI;而Notepad++有更智能的编码检测逻辑,能判断出这是UTF-8。
  • 当你写入Ž、Ǧ这类非ASCII字符时,文件里出现了超出ANSI范围的字节,编辑器就能明确识别出这是UTF-8编码,所以不会误判。

接收程序报错,大概率也是因为它依赖BOM来识别UTF-8编码,纯ASCII无BOM的文件被当成了ANSI处理,导致解析出错。

快速解决办法

把代码里的编码参数改成utf-8-sig,Python会自动在文件开头添加UTF-8 BOM,这样不管内容有没有特殊字符,EditPlus和接收程序都能正确识别为UTF-8:

with open(TXT_DESTINATION, 'w', encoding='utf-8-sig', newline='\n') as output:
    output.write(mythings)

验证效果

修改后再生成文件:

  • EditPlus打开时会显示编码为UTF-8
  • 接收程序也能正确解析文件内容,不会再报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 07:03:34