零基础学python之文本和编码问题

字符串是个相当简单的概念:一个字符串是一个字符序列。问题出在"字符"的定义上。

在2015 年,"字符"的最佳定义是Unicode字符。因此,从Python 3 的str对象中获取 的元素是Unicode字符

Unicode 标准把字符的标识和具体的字节表述进行了如下的明确区分。

字符的标识,即码位,是0~1 114 111的数字(十进制),在Unicode标准中以4~6个十六进制数字表示,而且加前缀U+。例如,字母A的码位是U+0041,欧元符号的码位是U+20AC,高音谱号的码位是U+1D11E. 在Unicode 6.3标准中,约10% 的有效码位有对应的字符。

字符的具体表述取决于所用的编码。编码是在码位和字节序列之间转换时使用的算法。在UTF-8编码中,A(U+0041)的码位编码成单个字节\x41,而在UTF-16LE编码中编码成两个字节\x41\x00。再举个例子,欧元符号(U+20AC)在UTF-8编码中是三个字节——\xe2\x82\xac,而在UTF-16LE中编码成两个字节:\xac\x20.

把码位转换成字节序列的过程是编码,使用encode;把字节序列转换成码位的过程是解码,使用decode.

非英语用户常常会搞反所谓的编码解码,可以这样理解: 把Unicode字符串想成“人类可读”的文本.那么,

把字节序列变成人类可读的文本字符串就是解码

而把字符串变成用于存储或传输的字节序列就是编码

python群542110741

所以,我们在做爬虫的时候,遇到乱码的情况,可以先去看看编码格式是否正确!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容