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参数指定。

好啦!今天的分享到这里就结束了,希望大家持续关注马哥教育官网,每天都会有大量优质内容与大家分享

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

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!