您现在的位置是:首页 > 文章详情

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

日期:2018-06-08点击:310

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

在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字符串想成“人类可读”的文本.那么,

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

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

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

原文链接:https://yq.aliyun.com/articles/639549
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章