课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
对于计算机来说,人类的自然语言是无法识别的,都是需要进行编码来转换成机器语言才可以,而今天我们就一起来了解一下,计算机编码的一些基础知识。
1、基本概念
我们看到的输入输出都是‘字符’(characters),计算机(程序)并不能直接处理,需要转化成字节数据(bytes),因为程序只能处理bytes数据。
例如:文件、网络传输等,处理的都是bytes数据——二进制数字。
1.1ASCII/Unicode
孤立的byte是毫无意义的,所以我们来赋予他们含义。就引入‘字符集’的概念,‘字符集’就是一个码位(codepoint)对应的一个字符的表。
该表用于赋予byte意义。还需要知道一个点:因为ASCII字符集支持的字符太少,不能表示各个国家语言中的字符。所以就发明了
Unicode——万国码,该字符集包含了你能用到的所有的字符。
1.2Encode/Decode
在python中字符串分为两个对象:str和unicode
str:asequenceofbytes
unicode:asequenceofcodepoint(码位——字符集中的数字)
1.3声明编码
正如前面所说的,计算机只能操作bytes,所以Python在编译原文件的时候,会先把源文件进行编码,默认以‘ASCII’进行编码。这就是为什么如果源文件中带有‘中文’,需要在源文件的起始行声明编码方式。
完成编码后,源码中的所有字符,都变成了bytes计算机就可以进行编译和处理了。编译过程:
读取文件
不同的文件,根据其声明的编码去解析为Unicode
转换为UTF-8字符串
针对UTF-8字符串,去分词
编译,创建Unicode对象(Python解释器处理)
根据这个过程,在自己的代码中也应该按照这个逻辑处理,意思是:
接收外部数据时,统一转化为Unicode
代码内部处理的都是Unicode
输出时统一转化为UTF-8(网络数据传输、文本输出)
1.4小结
程序中所有的输入和输出均为byte
世界上的文本需要比256更多的符号来表现(ASCII是不够的)
你的程序必须能够处理byte和unicode
byte流中不会包含编码信息(编码信息会在:文件的开头、协议中等地方声明)
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。