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

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

先举个例子,分别以不指定编码、指定编码为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 乱码



請為這篇文章評分?