大谈Python:python基础巩固--python有多少种编码方式,如何检测编码方式并完成转码。因此主要适配美国的英文,支持英文状态下的阿拉伯数字和标点符号。2、GB2312编码由于ASCII编码只能支持使用英文编码,我们的中文无法实现计算机信息交换,于是产生了GB2312编码来完成信息交换。是中华人民共和国国家标准的简体中文字符集。3、Unicode编码每个国家和地区定义了自己的编码标准后,在有多种编码语言的系统中就会出现乱码。韩国有韩文代码,日本有日文代码,这在多语言模型中造成了混乱。所以Unicode编码就是为了解决这种情况,把所有的编码统一成一个编码规范,即使系统中有多语言处理,也不会出现乱码。4、UTF-8编码正所谓先完成后完善,尤其是技术的发展。使用Unicode编码虽然解决了编码统一性的问题,但是在传输过程中会占用大量的空间并消耗相应的性能。因此,UTF-8顺应历史潮流而生。它可以用更小的字节数完成语言编码的转换,大大节省了空间和传输性能。5.检测和编码检测和编码在爬虫过程中经常用到。对网络上抓取的内容进行编码检测和判断,为后续的内容提取和数据清洗提供可靠依据。1#导入chardet库2importchardet3test_str="Pythonconcentrationcamp"4#使用detect()检测编码5printchardet.detect(test_str)为了避免大文本转换太耗时,chardet库还提供了另一种检测方法,使用对象UniversalDetector的逐行检测方式会大大提高效率。1#导入UniversalDetector对象2fromchardet.universaldetectorimportUniversalDetector34#定义并获取编码函数5defgetEncodeInfo(file):6#打开一个文件7withopen(file,'rb')asf:8#Universaldetector对象赋值9=deUniversalDetector()10forlineinf.readlines():11#遍历检测代码12detector.feed(line)13#确保检测达到最小置信度阈值,值为True时返回14ifdetector.done:15eak1关闭检测后Sourcetext17detector.close()18#returnencoding19returndetector.result['encoding']6.编码转换一般在创建.pypython文件时进行。如果文件头没有实现编码格式,默认是ASCII编码,这时候我们可以通过重新加载编码格式来处理。1#导入sys库2importsys3#重新加载sys系统库4reload(sys)5#打印默认编码格式6printsys.getdefaultencoding()7#重置编码格式UTF-88sys.setdefaultencoding('utf-8')9#打印重置编码格式10printsys.getdefaultencoding()如果对文本进行编码格式转换,一般的思路是先解码已有的文本,解码后再重新编码。1#读取或定义文本2content="textcontent"3#文本解码encode_info为检测到的编码方式4content_decode=content.decode(encode_info,'ignore')5#文本重新编码6content_encode_utf8=content_decode.encode('utf-8')前往微信公众号【Python集中营】获取更多精彩内容,专注后端编程实践,原创文章每日更新!
