字符串的编码解码处理
-
编码:将计算机中的字符串按照一定的顺序表示成二进制数据的过程。
-
二进制:0/1 每一个二进制数字,表示一位,通常计算机中:0000 0001。
字节:二进制数据~8位一个字节:0000 0001 = 一个字节
字符:2个字节 == 1个字符;通常情况下我们使用的字符串~就是使用字符编码的! -
计算机 -> 表示[英文字母、数字、部分特殊符号]-> ascii编码[0~256]。
-
周边国家 -> 表示[英文字母、数字、特殊符号、其他相似语言]-> ANSI。
-
使用国家扩展-> 要表示更多的语言和数据-> 扩展ANSI编码。
-
天朝-> 引入计算机-> 表示汉字-> 国家标准编码 -> GB2312-> GBK -> GB18030,
一个字节表示一个英文字母、数字、特殊符号等等,
两个字节表示汉字-> 字符(两个字节)。 -
推出了一种新编码:万国码,统一字符编码[号称可以统一全球范围内任何语言的表示方式],任何语言中的任何数据,都可以使用一个字符来表示,unicode编码。
-
UTF-8(数据传输编码:unicode transfer format 8 bit)
UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。
UTF-8就是在互联网上使用最广的一种unicode的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,注意的是unicode一个中文字符占2个字节,而UTF-8一个中文字符占3个字节)。从unicode到utf-8并不是直接的对应,而是要过一些算法和规则来转换。
按照固定的编码进行传输,接收方按照固定的编码进行解码得到正确数据。
Unicode是字符集,UTF-8 是编码规则。
一个汉字在UTF-8编码的情况下可能需要三个字节,使用gbk两个字节就足够了,所以有时候为了节省流量和硬盘,在面对中文世界时,也有使用gbk或者gbk2312编码的。
python字符串的编码和解码
要命的规则:字符串的编码解码,一直都是任何语言中一个难点和重点。任何字符串->都是由字节组成的!
python3中:字符:(str);字节(bytes)
字符->字节:encode 编码:将一个字符串编码成计算机可以操作的二进制数据。
字节->字符:decode 解码:将一个二进制数据按照指定的编码~解码成自然数据。
s = “大天朝” # s:<class ‘str’>
x = s.encode(“utf-8”) # x:<class ‘bytes’>
x-> b’\xb9\x00\xa5..’
x2 = x.decode(“utf-8”) # x2:<class ‘str’>
x2 -> “大天朝”