【Python 必会技巧】利用utf-8-sig 编码格式解决写入csv 文件 ...

文章推薦指數: 80 %
投票人數:10人

先举个例子,分别以不指定编码、指定编码为utf-8、指定编码为utf-8-sig 三种方式来做比较,再将写入csv 文件和txt 文件来做个对比一、不指定编码方式 ... 【Python必会技巧】利用utf-8-sig编码格式解决写入csv文件乱码问题 ITBOB•鲍勃 于 2020-02-2021:59:22 发布 7354 收藏 51 分类专栏: #奇技淫巧 文章标签: utf-8-sig utf-8 乱码 csv python 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_36759224/article/details/104417871 版权 奇技淫巧 专栏收录该内容 12篇文章 13订阅 订阅专栏 先举个例子,分别以不指定编码、指定编码为utf-8、指定编码为utf-8-sig三种方式来做比较,再将写入csv文件和txt文件来做个对比 一、不指定编码方式,直接存入csv文件 importcsv withopen('test.csv','w')asfp: writer=csv.writer(fp) writer.writerow(['汉语','俄语','韩语','日语','英语']) writer.writerow(['爱你','люблютебя','사랑해요','愛しています','loveyou']) 此时运行程序会报以下错误: UnicodeEncodeError:'gbk'codeccan'tencodecharacter'\uc0ac'inposition14:illegalmultibytesequence 二、指定编码为utf-8,再存入csv文件 接下来尝试将内容以utf-8编码方式存入test.csv文件中,可以看到除了英文,其他的全都是乱码: importcsv withopen('test.csv','w',encoding='utf-8')asfp: writer=csv.writer(fp) writer.writerow(['汉语','俄语','韩语','日语','英语']) writer.writerow(['爱你','люблютебя','사랑해요','愛しています','loveyou']) 三、指定编码为utf-8-sig,再存入csv文件 当将编码方式换成utf-8-sig之后,显示为正常: importcsv withopen('test.csv','w',encoding='utf-8-sig')asfp: writer=csv.writer(fp) writer.writerow(['汉语','俄语','韩语','日语','英语']) writer.writerow(['爱你','люблютебя','사랑해요','愛しています','loveyou']) 四、不指定编码方式,直接存入txt文件 withopen('test.txt','w')asfp: fp.write('爱你,люблютебя,사랑해요,愛しています,loveyou') 和存入csv文件一样,也会报以下错误: UnicodeEncodeError:'gbk'codeccan'tencodecharacter'\uc0ac'inposition16:illegalmultibytesequence 五、指定编码为utf-8/utf-8-sig,再存入txt文件 以utf-8或者utf-8-sig编码方式存入test.txt文件中,内容都是完全正常的: withopen('test.txt','w',encoding='utf-8')asfp: fp.write('爱你,люблютебя,사랑해요,愛しています,loveyou') withopen('test.txt','w',encoding='utf-8-sig')asfp: fp.write('爱你,люблютебя,사랑해요,愛しています,loveyou') utf-8与utf-8-sig有什么区别? utf-8以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序问题,也因此它实际上并不需要BOM;uft-8-sig中sig全拼为signature,即带有签名的utf-8(UTF-8withBOM);BOM全称ByteOrderMark,字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。

为什么写入csv文件要用utf-8-sig编码? Excel在读取csv文件的时候是通过读取文件头上的BOM来识别编码的,如果文件头无BOM信息,则默认按照Unicode编码读取。

当我们使用utf-8编码来生成csv文件的时候,并没有生成BOM信息,Excel就会自动按照Unicode编码读取,就会出现乱码问题了。

为什么写入txt文件要用utf-8编码? 在写入txt文件时,Windows会默认转码成gbk,遇到某些gbk不支持的字符就会报错,在打开文件时就声明编码方式为utf-8就能避免这个错误。

ITBOB•鲍勃 关注 关注 18 点赞 踩 51 收藏 打赏 5 评论 【Python必会技巧】利用utf-8-sig编码格式解决写入csv文件乱码问题 先举个例子,分别以不指定编码、指定编码为utf-8、指定编码为utf-8-sig三种方式来做比较,再将写入csv文件和txt文件来做个对比一、不指定编码方式,直接存入csv文件importcsvwithopen('test.csv','w')asfp:writer=csv.writer(fp)writer.writerow(['汉语',... 复制链接 扫一扫 专栏目录 Python学习笔记---utf-8与utf-8-sig两种编码格式区别 杨鑫newlife的专栏 09-27 1万+ Python学习笔记---utf-8与utf-8-sig两种编码格式区别 Windows系统——读取编码为utf-8与utf-8-sig的文件区别 GeekZW的博客 03-14 1272 Windows系统——读取编码为utf-8与utf-8-sig的文件区别 1、问题背景: 相信很多细心的朋友在实战的过程中发现,Windows系统下,利用Python或者Java读取txt文件时,控制台打印首行正常,但是若是用首行内容打开文本的话,就会报错。

(换句话说,断点调试你会发现第一行多了一串字符"\ufeff")。

Linux与Ma... 评论 5 您还未登录,请先 登录 后发表或查看评论 SPSS使用过程中出现的问题整理包括因子分析感谢各位大佬们 weixin_44394352的博客 03-26 4795 spss使用方法包括因子分析一、遇到问题:spss导入excel数据显示:对于当前服务器语言环境而言,文本值过长二、SPSS数据分析-从EXCEL导入三、因子分析在SPSS中的操作过程及结果解读 一、遇到问题:spss导入excel数据显示:对于当前服务器语言环境而言,文本值过长 出现这种错误可能是你的数据文件,所在的文件夹太深 复制到根目录下即可解决。

解决方法:spss导入Excel时出现“对当前服务器语言环境而言,文本值过长”,怎么处理 二、SPSS数据分析-从EXCEL导入 从EXCEL导入数据到 改变CSV文件的编码由gbk改为utf8 xcc_2269861428的博客 09-05 4939 /** *改变CSV文件的编码由gbk改为utf8 *@authorxuchangcheng *2019年9月5日 * */ publicclassConversionCSVcoding{ privatefinalstaticStringSOURCE_ENCODING="GBK"; privatefinalstaticStringTARGET_... spss导入数据error:对于当前服务器语言环境而言,文本过长 Barry__jie的博客 08-11 3408 这是因为文件路径太长了,文件放的太深了 复制到桌面上,再导入就欧克了 utf-8和utf-8-sig的区别(CSV文件乱码) 热门推荐 人生苦短,我用python 07-17 2万+ 前言:在写入csv文件中,出现了乱码的问题。

解决:utf-8改为utf-8-sig 区别如下: 1、”utf-8“是以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序问题,因此它不需要BOM,所以当用"utf-8"编码方式读取带有BOM的文件时,它会把BOM当做是文件内容来处理,也就会发生类似上边的错误. 2、“uft-8-sig"中sig全拼为signature也就是... 【python】UTF-8和UTF-8sig编码区别 zoetu 12-12 1300 json文件读取成dataframe出现了yurf-8编码错误 python写入文件时,encoding=‘utf-8‘格式,打开生成的csv或者excel文件,中文是乱码 zhaipupu的专栏 12-15 3068 写入文件时,encoding='utf-8’格式,打开生成的csv或者excel文件时,写入的中文是乱码。

encoding='utf-8-sig’格式写入,生成的csv文件打开后,中文是正常的。

这个是什么原因啊? ----已得到解释:python3的版本在写入文件时,编码当时如果用的utf-8,中文其实是可以读得。

用普通的文本编译器就行比如notepad++,但是用excel打开csv文件会出现中文乱码得情况,是因为python编码方式为utf-8,但是是无BOM格式的,excel软件,其对于utf-8编 pythonutf8-sig_Python利用utf-8-sig编码格式解决写入csv文件乱码问题 weixin_39640904的博客 12-15 236 先举个例子,分别以不指定编码、指定编码为utf-8、指定编码为utf-8-sig三种方式来做比较,再将写入csv文件和txt文件来做个对比一、不指定编码方式,直接存入csv文件importcsvwithopen('test.csv','w')asfp:writer=csv.writer(fp)writer.writerow(['汉语','俄语','韩语','日... utf-8和utf-8-sig u011854875的博客 11-07 4844 AsUTF-8isan8-bitencodingnoBOMisrequiredandanyU+FEFFcharacterinthedecodedUnicodestring(evenifit’sthefirstcharacter)istreatedasaZEROWIDTHNO-BREAKSPACE. UTF-8以字节为编码单元,它的字 python字符串编码,区别utf-8和utf-8-sig weixin_45105469的博客 03-26 534 python读取B.txt文件时,控制台打印首行正常,但是若是用首行内容打开文本的话,就会报错: Traceback(mostrecentcalllast): A File“E:/pythonproject/multiProcess/test.py”,line32,in withopen("%s.txt"%line,‘r’,encoding=‘utf-8’)as... pythonutf8-sig_python字符串编码,区别utf-8和utf-8-sig weixin_39756540的博客 12-15 635 Python读取文件首行多了"\ufeff"字符串python读取B.txt文件时,控制台打印首行正常,但是若是用首行内容打开文本的话,就会报错:Traceback(mostrecentcalllast):AFile"E:/pythonproject/multiProcess/test.py",line32,inwithopen("%s.txt"%line,'r',... pandas.to_csv通过encoding='utf-8-sig'解决存储中文后乱码问题 tangwendi的专栏 10-23 5344 如果pandas中有中文,to_csv会导致中文乱码 df.to_csv(path_or_buf=tofile,index=False,encoding='utf-8-sig') pd.read_csv()中encoding='utf-8'和'utf-8-sig'的区别 weixin_43184252的博客 05-14 2万+ Pandas.read_csv格式奇怪的问题 除了常见的utf-8,gbk,今天发现还有utf-8-sig 用默认格式打开是这样的: 明显是编码问题,但是用utf-8打开文件发现是这样的: 用open打开文件看到是这样的: 可以看到在文件的首部有一个\ufeff字段,那么feff是什么意思呢? feff是一个BOM(ByteOrderMark),是一个不显示的标识字段,在utf-16或者... 编码方式设置了utf-8,打印出来还是乱码怎么解决 qq_46410929的博客 04-21 2444 提取文字出现乱码 使用utf-8-sig后仍输出为�(\ufffd)的解决方案 m0_54382074的博客 12-20 282 主要解决在合并两个csv文件时出现使用utf-8-sig后输出仍为�(\ufffd)的解决方案 解决Python写入csv文件时出现空行问题繁体中文乱码问题encoding=‘utf_8_sig‘ 最新发布 nongcunqq的博客 04-21 402 withopen("test.csv","w",encoding='utf_8_sig',newline='')asfp: writer=csv.writer(fp,delimiter=",") #writer.writerow(["your","header","foo"])#writeheader writer.writerows(rsp_info) . SublimeText3中使用encoding="utf_8_sig"参数解决DadaFrame存取csv中中文乱码问题 weixin_41855010的博客 02-14 558 我们在使用python变成print函数打印中文的时候经常会碰到乱码的问题,我们先要理解为什么会出现乱码,主要的原因还是编码的问题。

我们在计算机中会遇到很多种编码,比如unicode、gbk、utf等等。

说白了,编码就是计算机看得懂的,人看不懂的码。

我们要把人的语言翻译成计算机的语言,就要使用encode编码,然后要在输出的时候需要再把计算机的码再decode成人类能看得懂的字符。

计算机中打印乱码... “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 ©️2022CSDN 皮肤主题:程序猿惹谁了 设计师:我叫白小胖 返回首页 ITBOB•鲍勃 CSDN认证博客专家 CSDN认证企业博客 码龄6年 Python领域优质创作者 192 原创 4249 周排名 617 总排名 132万+ 访问 等级 1万+ 积分 1万+ 粉丝 3643 获赞 2423 评论 7469 收藏 私信 关注 分类专栏 【数据结构与算法】 3篇 Python数据结构 1篇 Python算法 2篇 【Python数据分析】 27篇 Pandas 10篇 NumPy 6篇 Matplotlib 11篇 【Python网络爬虫】 30篇 爬虫基础 18篇 爬虫实战 12篇 逆向知识 JS逆向百例 APP逆向百例 1篇 反反爬虫 3篇 【Python基础知识】 基础学习 9篇 模块学习 9篇 CheckiO 52篇 奇技淫巧 12篇 经验总结 14篇 【Hexo博客搭建】 23篇 【个人年终总结】 1篇 【Java】 2篇 【Web前端】 4篇 【Linux】 2篇 【SQL】 4篇 【Markdown】 1篇 【Others】 9篇 最新评论 【Python必会技巧】[iforiinrange(1,10)]—列表解析式,列表中使用for循环 抹茶味盛夏: 感谢分享,找了好久 【APP逆向百例】Frida初体验,root检测与加密字符串定位 R玍一世ㄜ: 大佬,我想问一下手机安卓10如何用fildder抓包,或者怎样用电脑抓包? 谷歌浏览器检查更新时出错:无法启动更新检查(错误代码为3:0x80080005--systemlevel) moshui_lalala: 360极速版里找不到谷歌启动项 Hexo博客优化之博客美化系列(持续更新) DarrenHoo: 给大佬跪了 Hexo博客优化之博客美化系列(持续更新) ITBOB•鲍勃: 这个你得去live2d那里问问 您愿意向朋友推荐“博客详情页”吗? 强烈不推荐 不推荐 一般般 推荐 强烈推荐 提交 最新文章 【APP逆向百例】Frida初体验,root检测与加密字符串定位 Python异步库asyncio、aiohttp Python中如何解决asyncio文件描述符最大数量限制问题 2022年3篇 2021年3篇 2020年56篇 2019年116篇 2018年17篇 目录 目录 分类专栏 【数据结构与算法】 3篇 Python数据结构 1篇 Python算法 2篇 【Python数据分析】 27篇 Pandas 10篇 NumPy 6篇 Matplotlib 11篇 【Python网络爬虫】 30篇 爬虫基础 18篇 爬虫实战 12篇 逆向知识 JS逆向百例 APP逆向百例 1篇 反反爬虫 3篇 【Python基础知识】 基础学习 9篇 模块学习 9篇 CheckiO 52篇 奇技淫巧 12篇 经验总结 14篇 【Hexo博客搭建】 23篇 【个人年终总结】 1篇 【Java】 2篇 【Web前端】 4篇 【Linux】 2篇 【SQL】 4篇 【Markdown】 1篇 【Others】 9篇 目录 评论 5 被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 打赏作者 ITBOB•鲍勃 你的鼓励将是我创作的最大动力 ¥2 ¥4 ¥6 ¥10 ¥20 输入1-500的整数 余额支付 (余额:--) 扫码支付 扫码支付:¥2 获取中 扫码支付 您的余额不足,请更换扫码支付或充值 打赏作者 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。

2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值



請為這篇文章評分?