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

 

posted @ 2019-04-14 18:31  代码家园  阅读(414)  评论(0编辑  收藏  举报