csv文件EXCEL默认打开乱码问题

         这里讨论的问题是,当用记事本打开带有中文字符的csv正常时,用excel打开却是乱码。

        简单概括就是:编码问题,windows的 excel打开csv文本文件时,默认使用的是系统内的ANSI,在中文环境下就是GB2312。如果写文件时,用的编码格式是UTF-8那么excel用GB2312打开肯定是乱码。

        一般两种方法,在文件创建时指定让Excel默认打开不乱码的编码,或者加BOM 标记(Byte Order Mark 字节顺序标记),让excel用指定的编码打开。

        所以解决的思路就很清晰:

        1.使用GB2312,gbk,gb18030这类windows下中文默认的编码。

        2.使用utf-8-sig即在文件头写入 0xEF、0xBB、0xBF,让excel识别出这是utf-8编码,用utf-8编码打开csv文件。

实例:

python 写csv文件时指定编码格式,如gb2312,gbk,gb18030,python的csv包不需要再文件头写入0xEF、0xBB、0xBF,直接指定utf-8-sig就可以。

with open('file.csv', 'w', newline='', encoding='gb18030', mode='wb') as file:  writer = csv.writer(file)  # 写入数据到CSV文件

如果是数据流返回,可以指定编码格式

"Content-Type": "application/octet-stream; charset=utf-8-sig"

写入utf-bom的csv

没有bom的utf

go 在文件头写入 BOM

func generateCSV(data [][]string) []byte {var buffer bytes.Bufferwriter := csv.NewWriter(&buffer)for index, row := range data {if index == 0 {if len(row) > 0 {// 写入 UTF-8 BOM让excel自己识别csvrow[0] = "\xEF\xBB\xBF" + row[0]}}writer.Write(row)}writer.Flush()return buffer.Bytes()
}

参考:

Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别? - 知乎

ASCII、GB2312、GBK、GB18030、Unicode、UTF-8、BIG5 编码分析_gb18030和gbk-CSDN博客

csv 文件打开乱码,有哪些方法可以解决? - 知乎

encoding - Microsoft Excel mangles Diacritics in .csv files? - Stack Overflow

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/226290.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

走近“中国深度-深海探索主题展”,带你探索深海远洋

深海,自古以来给予了人类无限的遐想,随着时代的进步和科学的发展,海洋的神秘面纱被一点点揭开,呈现在我们面前的是一个资源宝库,“可上九天揽月,可下五洋捉鳖”已经成为现实,21世纪是海洋的世纪…

元宇宙的八个关键技术介绍!

人工智能(AI)、物联网、增强现实、虚拟现实、区块链、NFT、3D建模、空间和边缘计算等技术使最元宇宙开发成为可能。本文对元宇宙的8个关键技术进行了介绍。 人工智能 人工智能技术中的目标分割、目标追踪、姿态估计等是元宇宙场景中感知现实的关键工具&…

静态住宅IP代理实际应用:它的强大用途你知道吗?

静态住宅IP代理与动态IP代理相比,提供了更稳定的网络身份,使得企业在进行数据采集、区域定位营销和市场研究时更为高效。同时,它也是提高在线隐私保护和避免封禁的有效工具。 通过详细分析,你将能全面了解静态住宅IP代理的应用&a…

汇编实验2-2 查找匹配字符串笔记

一、数据段 1.字符串结尾:13,10,$ 2.设置格式控制字符串(这样就不用再写clrf函数了) 3.设置存关键字和句子的地址标签,以关键字为例 二、代码段 1.输入字符串 2.字符串比较 2.1 每次的比较长度,KLEN->CL 2.2 设置目标串起始…

算法效率的度量

算法效率的度量通常是通过时间复杂度和空间复杂度来描述的。 一、时间复杂度 算法中所有语句的执行次数之和为T(n),它是算法问题规模n的函数,时间复杂度主要分析T(n)的数量级。 分类 1. 最好时间复杂度:最好情况下,算法的时间…

线程池在Java中的应用实践

摘要:在实际业务场景中,线程池发挥着重要作用。本文将详细解答在高并发、任务执行时间短、并发不高、任务执行时间长以及并发高、业务执行时间长的业务场景下,如何使用线程池进行优化。 一、高并发、任务执行时间短的业务场景 在高并发、任务…

华为鸿蒙开发(HarmonyOs开发):超详细的:DevEco Studio 的安装和配置 、华为第三方包依赖:SDK软件包的安装、Nodejs的导入配置

2023年11月28日20:00:00 ⚠️⚠️HarmonyOs 开发工具 ⚠️⚠️ ⚠️⚠️DevEco Studio 的安装和配置⚠️⚠️ 文章目录 一、打开鸿蒙开发工具官网二、下载 DevEco Studio三、配置 DevEco Studio四、错误处理 ⚠️⚠️⚠️❤️❤️ 关注了解更多 一、打开鸿蒙开发工具官网 下面…

Vatee万腾的数字探险之旅:vatee科技创新的新纪元

在数字时代的潮流中,Vatee万腾以其独特的数字探险之旅引领着科技创新的新纪元。这不仅是一次技术的进步,更是一场数字领域的探险,让我们一同探索Vatee在科技创新中的前沿地带。 Vatee万腾的数字探险起源于对未知的渴望和对创新的不懈追求。在…

pandas教程:2012 Federal Election Commission Database 2012联邦选举委员会数据库

文章目录 14.5 2012 Federal Election Commission Database(2012联邦选举委员会数据库)1 Donation Statistics by Occupation and Employer(按职业与雇主划分的捐赠数据)2 Bucketing Donation Amounts(桶捐赠额&#x…

Go 编程语言详解:用途、特性、与 Python 和 C++ 的比较

什么是Go? Go是一个跨平台、开源的编程语言Go可用于创建高性能应用程序Go是一种快速、静态类型、编译型语言,感觉上像动态类型、解释型语言Go由Robert Griesemer、Rob Pike和Ken Thompson于2007年在Google开发Go的语法类似于C Go用于什么? Web开发&…

ELK高级搜索,深度详解ElasticStack技术栈-上篇

前言 1、黑马视频地址:java中级教程-ELK高级搜索,深度详解ElasticStack技术栈 2、本内容仅用于个人学习笔记,如有侵扰,联系删除 1. 课程简介 1.1 课程内容 ELK是包含但不限于Elasticsearch(简称es)、Lo…

【测试工具推荐】提高测试效率的必备工具分享!

说在前头 大家🐒啊,我是小🍬,小伙伴们一般都叫我苏苏。我在软件 测试 行业有5年的经验,目前是一家小公司技术部门的测试主管。 在社会上,特别是技术圈,大家会有刻板印象:测试工作的…