前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|如何让文件读取不再乱码

Python|如何让文件读取不再乱码

作者头像
算法与编程之美
发布2020-03-25 17:36:15
1.4K0
发布2020-03-25 17:36:15
举报

有时在读取文件时是否会出现乱码?因为在中文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参数指定。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档