0

0

Python怎么写入带BOM的UTF-8_utf-8-sig编码解决Excel乱码

P粉602998670

P粉602998670

发布时间:2026-03-19 12:26:03

|

517人浏览过

|

来源于php中文网

原创

用 utf-8-sig 编码写入 CSV 可解决 Windows Excel 打开中文乱码问题,因其自动添加 BOM(\ufeff)使 Excel 正确识别 UTF-8;需在 open() 中显式指定 encoding='utf-8-sig',csv.writer 不处理编码。

python怎么写入带bom的utf-8_utf-8-sig编码解决excel乱码

utf-8-sig 编码写入 CSV 就能避免 Excel 打开乱码

Excel(尤其是 Windows 版)默认把纯 UTF-8 当作系统本地编码(如 GBK),导致中文变问号或方块。加 BOM 是最简单、兼容性最好的解法,而 Python 的 utf-8-sig 编码会自动在开头写入 \ufeff,且读取时自动忽略它——不用手动拼接、也不用担心多出字符。

常见错误现象:open(..., encoding='utf-8') 写出的 CSV 在 Excel 里显示“涓枃”;用记事本另存为“UTF-8-BOM”再打开才正常;或者改用 cp936 虽然能看,但跨平台就崩。

  • 只对写入文本文件有效(csv.writerfile.write() 等),print() 或日志库不走这个路径
  • utf-8-sigutf-8 读取行为一致,但写入时前者加 BOM,后者不加
  • macOS/Linux 的 LibreOffice 或 WPS 通常不依赖 BOM,但 Windows Excel 必须靠它识别 UTF-8

csv.writer 写入必须显式指定 encoding='utf-8-sig'

很多人以为 csv.writer 自动处理编码,其实它只管分隔和转义,底层文件对象的编码才是关键。漏掉 encoding 参数或写成 'utf-8',BOM 就不会出现。

使用场景:导出报表、数据清洗后保存为 Excel 可读的 CSV。

立即学习Python免费学习笔记(深入)”;

  • 正确写法:with open('data.csv', 'w', encoding='utf-8-sig') as f:csv.writer(f)
  • 错误写法:with open('data.csv', 'w', encoding='utf-8')(没 BOM)、with open('data.csv', 'wb')(二进制模式,csv.writer 会报错)
  • 如果用 pandas.to_csv(),直接传 encoding='utf-8-sig' 即可,它内部已适配

别用 codecs 或手动写 BOM —— 多余且易出错

有人查到要先写 b'\xef\xbb\xbf',然后用 codecs.open(..., 'w', 'utf-8'),这既绕路又危险:BOM 可能被重复写入,或在追加模式下插到中间,破坏 CSV 结构。

Boba.video
Boba.video

AI动漫视频生成器

下载

性能与兼容性影响:手动操作增加出错概率,且 codecs 模块在 Python 3 中基本被内置 open() 取代;utf-8-sig 是标准编码名,所有 Python 3.3+ 都支持,无额外依赖。

  • 绝对不要:f.write('\ufeff') + encoding='utf-8'(BOM 和内容编码不匹配,可能触发异常)
  • 也别用:codecs.open(..., 'w', 'utf-8-sig')(多余,open() 原生支持)
  • 验证是否生效:用十六进制编辑器(如 VS Code 的 Hex Editor 扩展)打开 CSV,前三个字节应是 ef bb bf

Windows 记事本不是可靠验证工具

记事本保存为“UTF-8”时,实际写的是带 BOM 的 UTF-8,但它自己读的时候又会隐藏 BOM,导致你以为“没 BOM 也能正常”,其实是记事本做了特殊处理。Excel 不会这样宽容。

容易被忽略的地方:BOM 只解决“编码识别”问题,不解决字段内换行、逗号、引号转义等 CSV 格式问题;如果数据本身含 \r\n 且没被 csv.writer 正确包裹,Excel 仍可能错行。

真正需要检查的,是 Excel 打开后的第一眼——中文是否可读、列是否对齐、有没有意外空行。别的都只是中间环节。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

781

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

697

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

784

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

890

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1564

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

598

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

591

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

759

2023.08.11

Go Web框架Gin接口开发与中间件设计实践
Go Web框架Gin接口开发与中间件设计实践

本专题围绕 Go 在 Web 后端开发中的主流框架 Gin 展开,系统讲解高性能接口开发与中间件机制设计。内容涵盖路由分组、请求绑定、参数校验、统一响应封装、日志与鉴权中间件实现,以及接口限流与异常处理策略。通过实战项目案例,帮助开发者构建结构清晰、性能优良的 Go Web 服务体系,提升接口开发效率与系统可维护性。

7

2026.03.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5.1万人学习

SciPy 教程
SciPy 教程

共10课时 | 2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号