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 集中营】,专一后端编程实战,原创文章每天更新!