Python 编码的种类以及编码和解码的使用问题
编码问题的由来(前世今生):在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),通俗的说,高电平也就是电路状态是开的时候用1表示,电路状态是关的时候用0表示,也就是说,如果一件事情只有成功和失败两种状态的时候,1代表成功,0代表失败。
由于任何事物在计算机中都可以只用0和1表示,所以我们也称计算机为数字化的工具,未来的世界计算机的比重会十分的大,因此,我们会称未来的世界是一个数字化的世界。
以此为例,我要顺带提一下,Linux的selinux系统的设置,当我们使用命令:setenforcing 0 时,代表该系统是关闭的,执行命令 setenforcing 1 时,代表该系统是开启的。类似电路里的0和1的含义,与其是一致的、
在shell中,通常我们需要判断某些或者某项是否成功或者失败,我们是通过返回数字0或者0以外的任意数字,在这里,0代表成功,也可以说 是 真,其他数字代表失败,也可以说是假,因为,失败的原因可能有n种,但成功的状态就只有一种,那么就定义成功为0,非成功为其他数字。这里的0和1是和其它语言相反的。与电路里的0和1也是相反的。
看我扯了这么多,还没说到编码,不要着急,前面都是铺垫,必不可少的铺垫。既然计算机设计之初就只使用0和1这两个数字来表示所有的事物,那具体怎么实现呢?我们与机器交互无非是通过键盘输入我们认识的字符,字符是有限的,以英语为例,二十六个字母就组成了英语这门语言,而在人机交互时,并不是只有字母这些字符,还有esc键,tab键,特殊字符!~这样的,还有别的字符,这些字符就是英语以及其他语言的所有组合,也就是说,我们使用一个密码本,将这些字符仅使用数字0和1代替,比如,00000000表示null,一个空值,00000001表示标题的开始。等等。在字母系语言中,需要使用255个0和1组成的数字来表示,
那么这样一个个8位数字组成的数字与255个字符所一一对应的密码本就构成了我们现在所熟知的ASCII 编码表,我想,我更乐意叫它 ASCII密码表。注意,这个密码表是西文的密码表,也就是西方的字母语言所使用的密码表,汉字需要另外的编码表、
总结:为什么一个ASCII编码占位8个bit?(一个数字代表一个bit),因为,总共是255个ASCII编码字符,二进制表示的话,255=11111111,8个1,一个数字代表一个8位的0和1的组合。
第二个问题,ASCII编码表在哪?该密码表每个操作系统内都自带就有,那么别的编码表呢?有些操作系统是没有的,那么就需要下载相应的语言包来安装并使用。如何使用?在需要编码的地方指定你要使用哪种编码表,密码表、
第三个关键问题:
说了半天没说什么是编码。编码是自然语言编辑后生成机器能识别的机器码。
解码自然是编码的反方向,机器码生成人类能识别的自然语言。