频道栏目
首页 > 资讯 > Python > 正文

Python——str字符串和unicode字符串

17-07-19        来源:[db:作者]  
收藏   我要投稿

Python——str字符串和unicode字符串,对于处理过中文的Python程序员来说,想必被UnicodeEncodeError和UnicodeDecodeError并不陌生。为了更好的理解Python中的编码问题,我们首先介绍一下字符编码以及Python的两种字符串类型:str和unicode之间的区别。


字符编码

我们在编辑器中输入的文字,对用户来说是可读的。但是机器只能读懂01串,那怎么把我们方便阅读的符号转换成机器能读懂的01串呢?

这就需要给出符号-二进制之间的映射关系,而且必须是一一映射:即给定一个符号,机器有而且有唯一的二进制对应。根据字符得到二进制表示是编码过程(encode);根据二进制表示得到字符是解码过程(decode)。

ASCII字符集与字符编码

刚开始的时候,给出了ASCII标准,用一个8bits字节来表示字符。而且这个字节实际上只用了7位,最高位是不用的,这样总共能表示128个字符。意味着ASCII字符集只有128个。

随着计算机的普及,越来越多的国家开始使用计算机。128个字符难以满足各个国家的语言需求,这促使包含更多字符的字符集诞生,并且需要采用新的编码方案。

Latin-1

充分利用8bits字节的高位,扩展到256个字符。

Unicode字符集与字符编码

Unicode字符集包含了所有种语言的所有字符。通常用U+后接4位的16进制数字表示一个Unicode字符,比如U+FFFF。

UTF-8编码

UTF-8是针对Unicode字符集的一种编码方案。

用变长字节来表示字符:有的字符用一个字节表示(比如ASCII中规定的字符),有的字符用2个字节表示。最大长度为4字节。

这里写图片描述

上面这张图是从Wikipedia中截取的。Number of Bytes列表示字节数;Bits for code point列表示多少个bit位是真正有用的;First code point列表示该字节数表示的第一个Unicode字符;Last code point列表示对应字节数表示的最后一个Unicode字符;Byte i(i=1,2,3,4)列表示第i字节上的bit值。
以第二行为例,这一行的编码需要两个字节,其中真正有用的bit位只有11个,另5位是占位符,能表示从U+0080~U+07FF的Unicode字符。

至于具体的编码方式,我们以欧元符号。

相关TAG标签
上一篇:初级Socket 循环发送 接收
下一篇:10款超好用的开源大数据分析工具
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站