1、ASCII 编码
计算机最开始是由美国人发明使用的,当然 ASCII 编码也是由美国人发明的。所以它的产生主要是切合了美国的 English 语言,并且支持阿拉伯数字以及英文状态的标点符号。
2、GB2312 编码
由于 ASCII 编码只能支持英文的编码使用,我们的中文不能实现计算机信息交流,所以产生了 GB2312 编码用来完成信息交流,它是中华人民共和国国家标准简体中文字符集。
3、Unicode 编码
各个国家地区在定义了自己的编码规范之后,那么在多种编码语言的系统中就会出现乱码的情况。韩国有韩国的编码、日本有日本的编码,这样就造成了多语言模式的混乱。因此,Unicode 编码就是为了解决这种情况,将所有的编码都统一到一个编码规范里面,即使是系统中出现多语言的处理也不会产生乱码的情况。
4、UTF-8 编码
正所谓先完成再完善,技术的发展更是如此。虽然使用 Unicode 编码解决了编码统一性的问题,但是它又会占用比较多的空间、并且在传输的过程中也会消耗相应的性能。所以, UTF-8 就随着历史的潮流诞生了,它可以使用更小的字节数完成语言编码的转换,大大的节省了空间和传输性能。
5、检测编码
检测编码是经常要在爬虫过程中使用的方式,对网络上抓取到的内容进行编码的检测判断,为后续的内容提取、数据清洗等提供可靠的依据。
1# 导入 chardet 库
2import chardet
3test_str = "Python 集中营"
4# 使用 detect() 检测编码
5print chardet.detect(test_str)
为了避免大文本的转换太过耗费时间,chardet 库还提供了另外一种检测方式,使用对象 UniversalDetector 的逐行检测方式会大大的提高效率。
1# 导入 UniversalDetector 对象
2from chardet.universaldetector import UniversalDetector
3
4# 定义获取编码函数
5def getEncodeInfo(file):
6 # 打开一个文件
7 with open(file, 'rb') as f:
8 # universaldetector 对象赋值
9 detector = UniversalDetector()
10 for line in f.readlines():
11 # 遍历检测编码
12 detector.feed(line)
13 # 确保检测达到最小置信阈值为 True 时返回
14 if detector.done:
15 break
16 # 检测完之后关闭源文本
17 detector.close()
18 # 返回编码
19 return detector.result['encoding']
6、编码转换
一般在创建 .py 的 python 文件时,如果没有在文件头执行编码格式,则默认情况下是 ASCII 编码,这个时候我们可以采用重新加载编码格式的方式进行处理。
1# 导入 sys 库
2import sys
3# 重新加载 sys 系统库
4reload(sys)
5# 打印默认编码格式
6print sys.getdefaultencoding()
7# 重新设置编码格式 UTF-8
8sys.setdefaultencoding('utf-8')
9# 打印重新设置的编码格式
10print sys.getdefaultencoding()
如果是进行文本的编码格式转换时,一般的思路是先将现有文本进行解码、完成解码之后再重新编码。
1# 读取或定义文本
2content = "文本内容"
3# 文本解码 encode_info 为检测到的编码方式
4content_decode = content.decode(encode_info,'ignore')
5# 文本重新编码
6content_encode_utf8 = content_decode.encode('utf-8')
更多精彩前往微信公众号【Python 集中营】,专注后端编程实战,原创文章每天更新!
相关推荐
特别提醒:本文件为《大话数据分析:Tableau数据可视化实战》的数据集,并不是PDF书籍。
《大话Java:从零基础到数据库、Web开发》并不单单从基础知识的角度来讲解Java,而是从解决问题的角度来介绍Java语言。书中介绍的大量实用的开发案例,既能让读者巩固每章的知识,又可以让读者学以致用,激发编程...
2009-09-01 09:08 <DIR> 爱有天意(动画) 2009-02-04 17:58 <DIR> 猫扑游鱼 2009-06-06 10:12 <DIR> 画船听雨眠 2009-02-12 15:51 <DIR> 盛夏未央 2009-02-26 15:59 <DIR> 知音 2009-09-01 09:08 <DIR> 秋千(动画) ...
大话存储:存储系统底层架构原理极限剖析(终极版)第3部分 大话存储:存储系统底层架构原理极限剖析(终极版)第3部分大话存储:存储系统底层架构原理极限剖析(终极版)第3部分
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等...Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
《大话处理器:处理器基础知识读本》主要内容简介:处理器是IT、通信、电子产业的基石,没有处理器,信息产业大厦就如同建立在沙滩之上。《大话处理器:处理器基础知识读本》是一本图文并茂、生动幽默的处理器科普读本...
共5个压缩包
大话存储:存储系统底层架构原理极限剖析(终极版)第5部分 大话存储:存储系统底层架构原理极限剖析(终极版)第5部分
在Python3环境下,调试实现了《大话设计模式》中简单工厂模式,通过定义单独的工厂类,完成对具体的产品的实例化,参考链接 具体实现见代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # Date : 2017-10-15 ...
大话存储:存储系统底层架构原理极限剖析(终极版)第4部分 大话存储:存储系统底层架构原理极限剖析(终极版)第4部分
大话存储:存储系统底层架构原理极限剖析(终极版)_张冬2015.01_P989
强大的前台功能: (1)手机版网站 - 随时随地轻松访问网站 (2)会员系统 - 为网站留住回头客 (3)商城系统 - 开通在线购物功能 (4)万能表单 - 轻松手机客户资料 (5)站内搜索 - 最大话提高网站效率 (6)微博...
1.强大的前台功能: (1)手机版网站 - 随时随地轻松访问网站 (2)会员系统 - 为网站留住回头客 (3)商城系统 - 开通在线购物功能 (4)万能表单 - 轻松手机客户资料 (5)站内搜索 - 最大话提高网站效率 (6)...
《大话存储:存储系统底层架构原理极限剖析(终极版)》内容涉及:计算机IO基本概念,硬盘物理结构、盘片数据结构和工作原理,七种常见RAID原理详析以及性能细节对比,虚拟磁盘、卷和文件系统原理,磁盘阵列系统,...
资源名称:大话存储:存储系统底层架构原理极限剖析资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
本文实例讲述了Python设计模式之代理模式。分享给大家供大家参考,具体如下: 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ =...
[大话存储:网[大话存储:网络存储系统原理精解与最佳实践].张冬.扫描版络存储系统原理精解与最佳实践].张冬.扫描版