Python如何利用utf-8-sig编码格式解决写入csv文件乱码问题
文章推薦指數: 80 %
这篇文章主要介绍了Python如何利用utf-8-sig编码格式解决写入csv文件乱码问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章 ...
立即登录
立即注册
服务器
数据库
开发技术
网络安全
互联网科技
登录
注册有礼
控制台
用户中心
财务账户
优惠券
充值
退出
云服务器
香港服务器
高防服务器
最新更新
网站标签
地图导航
产品
首页 >
行业资讯 >
开发技术 >
Python如何利用utf-8-sig编码格式解决写入csv文件乱码问题
0
分享
分享文章到朋友圈
分享文章到QQ
分享文章到微博
复制本文链接
Python如何利用utf-8-sig编码格式解决写入csv文件乱码问题
发布时间:2021-06-1715:12:39
来源:亿速云
阅读:497
作者:小新
栏目:开发技术
这篇文章主要介绍了Python如何利用utf-8-sig编码格式解决写入csv文件乱码问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
先举个例子,分别以不指定编码、指定编码为utf-8、指定编码为utf-8-sig三种方式来做比较,再将写入csv文件和txt文件来做个对比一、不指定编码方式,直接存入csv文件import csv
with open('test.csv', 'w') as fp:
writer = csv.writer(fp)
writer.writerow(['汉语', '俄语', '韩语', '日语', '英语'])
writer.writerow(['爱你', 'люблю тебя', '사랑해요', '愛しています', 'love you'])此时运行程序会报以下错误:UnicodeEncodeError:'gbk'codeccan'tencodecharacter'\uc0ac'inposition14:illegalmultibytesequence二、指定编码为utf-8,再存入csv文件接下来尝试将内容以utf-8编码方式存入test.csv文件中,可以看到除了英文,其他的全都是乱码:import csv
with open('test.csv', 'w', encoding='utf-8') as fp:
writer = csv.writer(fp)
writer.writerow(['汉语', '俄语', '韩语', '日语', '英语'])
writer.writerow(['爱你', 'люблю тебя', '사랑해요', '愛しています', 'love you'])三、指定编码为utf-8-sig,再存入csv文件当将编码方式换成utf-8-sig之后,显示为正常:import csv
with open('test.csv', 'w', encoding='utf-8-sig') as fp:
writer = csv.writer(fp)
writer.writerow(['汉语', '俄语', '韩语', '日语', '英语'])
writer.writerow(['爱你', 'люблю тебя', '사랑해요', '愛しています', 'love you'])四、不指定编码方式,直接存入txt文件with open('test.txt','w') as fp:
fp.write('爱你, люблю тебя, 사랑해요, 愛しています, love you')和存入csv文件一样,也会报以下错误:UnicodeEncodeError:'gbk'codeccan'tencodecharacter'\uc0ac'inposition16:illegalmultibytesequence五、指定编码为utf-8/utf-8-sig,再存入txt文件以utf-8或者utf-8-sig编码方式存入test.txt文件中,内容都是完全正常的:ith open('test.txt','w', encoding='utf-8') as fp:
fp.write('爱你, люблю тебя, 사랑해요, 愛しています, love you')
with open('test.txt','w', encoding='utf-8-sig') as fp:
fp.write('爱你, люблю тебя, 사랑해요, 愛しています, love you')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就能避免这个错误。
知识点扩展:utf-8和utf-8-sig的区别前言:在写入csv文件中,出现了乱码的问题。
解决:utf-8改为utf-8-sig区别如下:1、”utf-8“是以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序问题,因此它不需要BOM,所以当用"utf-8"编码方式读取带有BOM的文件时,它会把BOM当做是文件内容来处理,也就会发生类似上边的错误.2、“uft-8-sig"中sig全拼为signature也就是"带有签名的utf-8”,因此"utf-8-sig"读取带有BOM的"utf-8文件时"会把BOM单独处理,与文本内容隔离开,也是我们期望的结果.感谢你能够认真阅读完这篇文章,希望小编分享的“Python如何利用utf-8-sig编码格式解决写入csv文件乱码问题”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
推荐阅读:python写入txt文件正常,但是写入csv文件中文乱码问题
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
python
csv
上一篇新闻:python中怎么控制多进程
下一篇新闻:golang通过cgo调用C++程序的方法
猜你喜欢
使用php怎么在修改新闻时删除图片
利用php怎么实现一个跨服务器访问功能
php中解析字符串排列数组的方法
使用PHP怎么将远程图片保存到本地
PHPIDEPHPStorm怎么配置支持Laravel代码的提示方法
php解析xml方法的实例讲解
使用php怎么对网站的在线人数进行计算
使用PHP输出一个等腰三角形
怎么解决PHPsession文件独占锁引起阻塞的问题
利用PHP怎么获取数组中最大值的下标
最新资讯怎么远程使用jupyternotebookPython随机值怎么实现nginx反向代理ftp服务器怎么搭建Python的configparser模块怎么使用Flask中如何优化SQL如何使用random模块生成验证码python的requests库get和post参数怎么传递python项目目录规范是什么怎么用vue代码实现打印功能windows蓝屏代码0x000007b怎么解决
相关推荐
python读取和写入csv文件的方法
如何在python中写入csv
python如何写入数据到csv或xlsx文件
python如何对csv文件追加写入列
Python如何实现读取及写入csv文件
Python把字典写入到CSV文件的方法
python如何以字典方式写入csv文件
利用python如何删除csv文件
如何解决csv文件读写乱码问题
Python怎么读取和写入操作CSV文件
相关标签
python学习
ipython
python深拷贝
python字典
python线程队列
pythondjango
python参数类型
python学习之
python鸭子类型
python3.7.3
python小技巧
python面试
python-v
python2.7安装
python内存分配
python多线程
python面向对象
python多进程
python语言基础
python算法
主题地图
微信小程序入口
css边框阴影
mysql最新版本
idea导入eclipse项目
ssh端口号
微信小程序支付
游戏云主机
list删除指定元素
docker命令
小程序代码
微信小程序授权
cad注册机怎么用
ascii码转换
pdf转png
windows激活码
rabbitmq集群
idea汉化
spring依赖注入
常用dns
虚拟ip地址
docker部署
cad怎么画矩形
pdf文件加密
ps快速去水印
mac怎么重装系统
php时间戳
mysql查看版本
sudo命令
延伸文章資訊
- 1Python如何利用utf-8-sig编码格式解决写入csv文件乱码问题
这篇文章主要介绍了Python如何利用utf-8-sig编码格式解决写入csv文件乱码问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章 ...
- 2What is the difference between utf-8 and utf-8-sig?
"sig" in "utf-8-sig" is the abbreviation of "signature" (i.e. signature utf-8 file). Using utf-8-...
- 3Python中utf-8与utf-8-sig两种编码格式的区别 - CSDN博客
As UTF-8 is an 8-bit encoding no BOM is required and anyU+FEFF character in the decoded Unicode s...
- 4What is the difference between utf-8 and utf-8-sig? - Quora
UTF-8 is a scheme for encoding any Unicode character (represented by a number between 0 and 0xFFF...
- 5Python中的字串操作和編碼Unicode詳解 - 程式前沿
Python在使用'utf-8'編碼寫入檔案時不會寫入BOM頭,但是如果指定編碼'utf-8-sig'則會迫使Python寫入一個BOM頭。 使用'utf-16-be'不會寫入一個BOM頭, ...