打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python|如何让文件读取不再乱码
问题描述
有时在读取文件时是否会出现乱码?因为在中文Windows系统中,如果不指定文本文件的编码,那么它就会采用系统默认的GBK编码,即一个英文字符是ASCII码,一个汉字是两个字节的内码。文件的本质是二进制文件,相同的文本采用不同的编码得到的二进制数据是不同的。
解决方案
GBK编码执行文件后是7个字节,分别是Ox61Ox62 OX63 Oxce Oxd2 Oxc3 Oxc7
fobj=open('c:\\abc.txt','wt',encoding=’gbk’)
fobj.write('abc 我们')
fobj.close()
其中前三个是abc符号,Oxce Oxd2是‘我’,Oxc3 Oxc7是‘们’。
而在open中用encoding参数指定UTF-8编码,执行后就是9个字符,它们分别是:
Ox61 Ox62 Ox63 Oxe6 Ox88 Ox91 Oxe4 OxbbOxac.其中Oxe6 Ox88 Ox91是‘我’,
Oxe4 Oxbb Oxac是‘们’。
使用方法:
def writeFile():
f=open('abc.txt','wt',encoding='utf-8')
f.write('abc我们')
f.close()
def readFile():
f=open('abc.txt','rt',encoding='utf-8')
for  s in f.readlines():
print(s,end='')
f.close()
try:
writeFile()
readFile()
except Exception as e:
print(e)
#运行结果
adc我们
当使用的编码不一致时就会出现以下情况:
def writeFile():
f=open('abc.txt','wt',encoding='utf-8')
f.write('abc我们')
f.close()
def readFile():
f=open('abc.txt','rt',encoding='gbk')
for  s in f.readlines():
print(s,end='')
f.close()
try:
writeFile()
readFile()
except Exception as e:
print(e)
#运行结果
abc鎴戜滑
结语
文本读取的默认编码是GBK,所以想用GBK读文件时可以用encoding参数,也可以不用,它会默认的使用GBK,但如果要使用UTF-8编码就必须用encoding参数指定。
END编  辑   |   王楠岚
责  编   |   李   靖
where2go 团队
微信号:算法与编程之美
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python-utf-8格式的文件转换gbk格式
php中的编码转码
深入Java字符串
maven错误解决:编码GBK的不可映射字符
Java中的字符集编码入门(三)GB2312,GBK与中文网页
eclipse 设置编码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服