教程引言:
荟萃经典的Python面试题,包括但不限于基础知识,高阶知识,算法,以及开放性回答等必考的面试题。
如何理解字符集与字符编码?
字符集与字符编码的概念其实很简单,没这么复杂。字符集,顾名思义,就是一个字符的集合,比如将中国的所有汉字作为一个字符集,将所有拉丁字母作为一个字符集。而字符编码是指将字符集里面的字符用一个唯一的数字编码来表示。为什么需要用数字编码来表示一个字符呢?因为计算机只能处理二进制。我们如果需要让计算机处理字符,那么必须将它转换为二进制。举个简单的例子,将字符"我"用二进制00来进行表示,将字符"爱"用二进制01来进行表示,将字符"你"用二进制10来进行表示:
字符 | 字符编码 |
我 | 00 |
爱 | 01 |
你 | 10 |
Unicode编码
Python3中的字符串采用Unicode进行编码。Unicode既是一种字符集,也是一种编码规范。Unicode字符集囊括了ASCII字符,汉字,希腊字母、俄文字母等世界各国,各地区的文字字符。Unicode编码通常采用固定的两个字节来对字符进行编码,这种固定编码的方式是有局限的,比如ASCII字符只需要使用一个字节,使用两个字节来进行编码就带来了存储空间的浪费。为优化存储空间,以及提升对unicode字符的处理性能,在Unicode编码的基础上,又应运而生了UTF-8编码,UTF-16编码,UTF-32等编码,这几类都是变长编码。在UTF-8编码中,ASCII字符仍然使用1个字节来进行编码和存储,其它字符至少使用2个字节来进行编码和存储。
在Python中通过ord函数可以获取某一个字符的十进制编码:
>>> ord('我') 25105 >>> ord('爱') 29233 >>> ord('你') 20320
通过chr函数可以将字符的数字编码转换为特定的字符:
>>> chr(25105) '我' >>> ord(29233) '爱' >>> ord(20320) '你'
关注微信公众号:薯条编程,公众号后台回复"Python资料",免费领取Python电子书,以及学习Python视频课程。