python 编码问题
作者:互联网
一、如何查看读取文件的编码
"""
windows中文件的编码为:GB2312,Linux中文件的编码为:UTF-8
即windows中新的txt编码为GB2312
"""
import chardet #引入查看编码的模块 with open('d:/ceshi/aa1.txt', 'r') as ff: cc=ff.read().encode('GB2312') dd=chardet.detect(cc) print(dd) 或
import chardet #引入查看编码的模块 with open('d:/ceshi/aa1.txt', 'rb') as ff: cc=ff.read() dd=chardet.detect(cc) print(dd)
结果:
{'encoding': 'GB2312', 'confidence': 0.3703703703703704, 'language': 'Chinese'}
注意:chardet中detect只支持encodi编码过的类型,如果没有编码的类型会类型错误。
二、如何改变读取文件的编码
import chardet #引入查看编码的模块 with open('d:/ceshi/aa1.txt', 'r') as ff: #读取的时候是gb2312 cc=ff.read().encode('utf-8') #改变编码为utf-8 dd=chardet.detect(cc) #调用查看编码模块 print(dd) #查看编码类型 结果: {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
改变后,可以直接写入文件,上传至linux后即不会出现乱码,记住写入时候需要必须使用wb格式,因为open中的write仅支持str类型,所以,需要使用byte类型写入
with open("d:/ceshi/aa9.txt",'wb') as hh: hh.write(cc)
三、编码与解码
encode 编码 和 decode 解码 with open('d:/ceshi/aa1.txt', 'r') as ff: cc=ff.read().encode('utf-8') #使用utf-8进行编码 kk=cc.decode('utf-8') #使用utf-8进行解码 print(cc) print('-----------') print(kk) 结果: b'\xe6\x9a\x97\xe6\x81\x8b\xe6\x88\x91\xe6\x8b\x89\xe6\x8e\x89\xe8\x89\xbe\xe8\xbf\xaa\xe5\xba\xb7klsjdflad12\n' ----------- 暗恋我拉掉艾迪康klsjdflad12
标签:编码,utf,python,dd,问题,cc,chardet,ff 来源: https://www.cnblogs.com/weilaibuxiangshuo/p/10706363.html