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参数指定。
好啦!今天的分享到这里就结束了,希望大家持续关注马哥教育官网,每天都会有大量优质内容与大家分享
好啦!今天的分享到这里就结束了,希望大家持续关注马哥教育官网,每天都会有大量优质内容与大家分享!版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。