python2和python3中encoding的差别
其他
2020-08-05 09:18:53
阅读次数: 0
1.写在前面的话
- 对于一些python库,比如:requests,会用到编码和解码(
requests.utils.get_encodings_from_content()
),还记得写在python文件最前面的#-*- coding:utf-8 -*-
吗?
- 编码和解码的目的是什么呢?
- 对于不同的python版本,应该采用怎样的编码解码方法呢?
2.编码方式
- ASCII
- ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符
- 如果要处理中文,ASCII码所能产生的组合数明显力不从心
- Unicode
- 用统一的一套编码规则来对不同语言字符进行编码,从而解决不同语言之间的乱码问题
- UTF-8
- Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储,而UTF-8就是一种广泛使用的Unicode实现方式(也就是将某个字符根据Unicode字符集所对应的二进制代码编码成真正的字节码),所谓的字节码就是机器能读懂的二进制码(8个二进制位构成一个自字节),对应的字符码就是我们平时看到的字符(比如:‘A’)
3.Python2/3的不同编码方式
- 先来看一个整体的编码解码流程吧(python中)
备注:这是转载的图片
- 通过
sys.getdefaultencoding()
查询python2/3的编码方式
- 在python2中,存在三种字符串类:
basestring
这个是母类
str
这个是子类,是由unicode编码得到的字节串,严格说不是字符串
unicode
这个也是子类,这个是字符串
- 在python3中,存在两种字符串类,用于区分字符串和字节:
bytes
这个是字节
str
这个是字符串,与python2是不同的哦
转载自blog.csdn.net/qq_37285386/article/details/107721224