理解字符编码之前,先了解一些基础的字节、字符、字符集、字符码、字符编码。 字节字节(byte),是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于有八位,一个中文字占2个字节。无论保存在磁盘还是网络传输上的数据(文字、图片、视频、音频)都是由字节组成的。
字符字符(Character)是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等 字符集字符集(Character set)是多个(某个范围)字符的集合,字符集种类较多,每个字符集包含的字符个数不同。 比如ASCII 字符集总共有128个字符,包含了英文字母、阿拉伯数字,标点符号和控制符。而GB2312字符集定义了 7445个字符,包含了绝大部分分汉字。 字符码字符码(Code Point)是指字符集中的字符对应的数字编号,例如ASCII中字符集用0-127分别表示128个字符,“A' 在字符编码就是65。 字符编码字符编码(Character encoding) 是将字符集中的字符码映射为字节流的一种具体实现方案,常见的字符编码有ASCII编码、UTF-8编码、GBK编码等,某种意义上来说,字符集与字符编码有某种对应关系,例如ASCII字符集有对应ASCII编码。ASCII字符编码规定使用单字节中低位的7个比特去编码所有的字符。 例如“A” 的字符集编号是65,用单字节表示就是0x41,因此写入存储设备的时候就是b'01000001' 编码、解码
ASCII 编码ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
UnicodeUnicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 Unicode存在的问题
UTF-8UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。其他实现方式还包括 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示),不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8 是 Unicode 的实现方式之一。
Python中的编码
此图截取自金角大王博客 |
|
来自: 昵称11935121 > 《待分类》