【Python 必会技巧】利用utf-8-sig 编码格式解决写入csv 文件 ...
文章推薦指數: 80 %
先举个例子,分别以不指定编码、指定编码为utf-8、指定编码为utf-8-sig 三种方式来做比较,再将写入csv 文件和txt 文件来做个对比一、不指定编码方式,直接存入csv ...
【Python必会技巧】利用utf-8-sig编码格式解决写入csv文件乱码问题_ITBOB•鲍勃的博客-程序员宅基地_utf-8-sig
技术标签: python #奇技淫巧 utf-8 utf-8-sig csv 乱码
先举个例子,分别以不指定编码、指定编码为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就能避免这个错误。
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36759224/article/details/104417871
原作者删帖
不实内容删帖
广告或垃圾文章投诉
智能推荐
错误再次按按钮释放快门Ifyou’verecentlypickedupaselfiesticktousewithyourAndroiddeviceyoumayhaverunintoasignificantproblem:thetriggerbuttondoesn’tactuallytakeaphoto(butinsteadzooms...
一:设置Git的username和email$gitconfig--globaluser.name"name"$gitconfig--globaluser.email"[email protected]"二:生成ssh$sshssh-keygen这里是因为我本地已经有了ssh,所以我重置了cd~/.sshls至此ssh设置...
设计有三宝:圆角、渐变、阴影对我程序来说,圆角、渐变是日常。
要么写shape文件,要么直接引用开源库来实现圆角渐变等效果。
这里给大家推荐一个开源项目,专门打造圆角的圆角神器 下面提供一些圆角、渐变的方法和工具类,开源和本地随意选择主要支持:1.可定义边框及其颜色和填充色的 /***@paramsolidColor填充色*@param...
abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人博客abs的个人...
在Python环境下安装PyOpenGL包,实现Python和OpenGL的开发环境。
PyOpenGL工具包的下载地址:https://pypi.python.org/pypi/PyOpenGL/3.0.2然后双击.exe可执行文件,即可安装。
安装程序会自动搜索到Python的安装目录,并且安装在与Python相同的目录下。
安装过程比较简单。
一个简单的实例如下:fromOpenG
在mac上用hexo+Travis-ci+github构建自动化博客。
TravisCI:是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于采用yaml格式,简洁清新独树一帜。
目前大多数的github项目都已经移入到TravisCI的构建队列中,据说TravisCI每天运行超过4000次完整构建。
说一下我对Travis的理解。
tarvis-ci是远端服务器构建,跟
随便推点
数据据结构(C++与C#比较)栈概念Stack(堆栈)是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构C++//引入头文件#include<stack>常用函数函数名作用push入栈pop出栈top返回栈顶元素empty检查栈是否为空size返回栈中元素数量例子 //定义一个栈 stack<int>s; //向栈中压入10
@TestpublicvoidtestFileName()throwsIOException{Filefile=newFile("E:\\pdftest\\中文1.docx");//组装post请求体,以文件的形式发送MultipartEntityBuilderbuilder=MultipartEntityBuilder.create();//解决上传文件,文件名中文乱码问题bui
资源文件生成器将.txt文件和.resx(基于XML的资源格式)文件转换为公共语言运行库二进制.resources文件,该文件可嵌入运行库二进制可执行文件或编译成附属程序集。
有关部署和检索.resources文件的信息,请参见应用程序中的资源。
Resgen.exe执行下列转换:将.txt文件转换为.resources文件或.resx文件。
将.resou...
时间转毫秒毫秒格式化转LocalDateTimepublicIntegersaveWhiteList(MemberVOmemberVO){Stringpattern="yyyy-MM-ddHH:mm:ss";SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");if(memberVO.getEndTime()!=0){longdaysInMillis.
sudoapt-getinstallgitgitclonegit://github.com/mininet/mininetcdmininetcdutilsudo./install.sh-asudomnsudoapt-getinstallmininet
【SQL心得】:在含有GROUPBY的SELECT语句中如何显示COUNT()为0的结果1.问题IDFlagCategoryID111211312412503表1-ExampleTable理想的结果应该如下:CategoryIDTotalNum12223
推荐文章
“视频会员”的意义,藏在腾讯视频VIP九周年里_互联网指北的博客-程序员宅基地
Java并发包源码学习系列:挂起与唤醒线程LockSupport工具类_天乔巴夏丶的博客-程序员宅基地
redis工具类_[纳川]的博客-程序员宅基地
android6.0voldshutdown流程_kc专栏的博客-程序员宅基地
sublime3自定义配置_打杂人的博客-程序员宅基地
Win7/Win10如何设置局域网文件共享_Tasdily的博客-程序员宅基地_win10访问不了win7共享文件夹
自然语言处理工具包HanLP的Python接口_weixin_33698043的博客-程序员宅基地
xs_run加密还原_chengxieyan6053的博客-程序员宅基地
热门文章
OGG-COLMAP-列映射_bigclouder的博客-程序员宅基地
ubuntu系统安装软件问题总结_知易行难wangshuailpp的博客-程序员宅基地
opengl函数总结以及算法课程复习1_Duihanhan的博客-程序员宅基地
Django学习之用django导入html文件开发第一个网页页面。
(基础!!)_Kinght_123的博客-程序员宅基地_django引入html
ThinkPHP5开发环境安装和配置_qlchenxh的博客-程序员宅基地_tp5环境配置
《RobustFaceRecognitionviaSparseRepresentation》论文翻译_威士忌燕麦拿铁的博客-程序员宅基地
大数运算_mu6y的博客-程序员宅基地
CXF与spring整合发布服务端及客户端的使用_weixin_40250669的博客-程序员宅基地
相关标签
python
#奇技淫巧
utf-8
utf-8-sig
csv
乱码
延伸文章資訊
- 1【Python 必会技巧】利用utf-8-sig 编码格式解决写入csv 文件 ...
先举个例子,分别以不指定编码、指定编码为utf-8、指定编码为utf-8-sig 三种方式来做比较,再将写入csv 文件和txt 文件来做个对比一、不指定编码方式,直接存入csv ...
- 2【Python 技巧】利用utf-8-sig 編碼格式解決寫入csv 文件亂碼問題- 台 ...
先舉個例子,分別以不指定編碼、指定編碼爲utf-8、指定編碼爲utf-8-sig 三種方式來做比較,再將寫入csv 文件和txt 文件來做個對比一、不指定編碼方式,直接存入csv ...
- 3codecs — Codec registry and base classes — Python 3.10.7 ...
Encodings and Unicode¶ · utf-8-sig encoding can be correctly guessed from the byte sequence. · 0x...
- 4【Python 必會技巧】利用utf-8-sig 編碼格式解決寫入csv 文件 ...
先舉個例子,分別以不指定編碼、指定編碼爲utf-8、指定編碼爲utf-8-sig 三種方式來做比較,再將寫入csv 文件和txt 文件來做個對比一、不指定編碼方式 ...
- 5Python中的字串操作和編碼Unicode詳解 - 程式前沿
本文主要給大家介紹了關於 Python中的字串操作和編碼Unicode的一些知識 ... 會寫入BOM頭,但是如果指定編碼'utf-8-sig'則會迫使Python寫入一個BOM頭。