四.python3 字符编码

计算机最底层能识别的

二进制数:0,1

为将二进制数转变成人能看懂的文字

中国

发展出 ------>ASCII:只能存英文和拉丁字符。 一个字符占一个字节,八位

               ------>gb2312 :只能存6700多个中文, 1980

                   ------>gbk1.0:存了2万多字符,   1995

                      ------>gb18030:存了2万7千个中文,   2000

 

国际

----------------------------->unicode(相当于一个标准):utf-32(unicode的一个表现形式,编码集): 一个任意字符占4个字节

                                ------>unicode:utf-16: 一个字符占2个字节或2个以上(如果找不到字符对应的编码就在utf-32中去找)

                                   ------>unicode-8: 一个英文用ASCII码来存,一个中文占3个字节

中国标准用的是gbk

windows系统用的是gb18030

编码和解码

 

python 2.x中的默认编码是ASCII,内存中默认的unicode:utf-16

pyhthon2使用命令行,执行如下,CMD显示编码使用GBK  CHAP 

s = "红色"
s_to_unicode = s.decode("utf-8")
unicode_to_gbk = s_to_unicode.encode("gbk")
print("unicode",s_to_unicode)
print("gbk",unicode_to_gbk)

utf8转成unicode,unicode向下兼容gbk,所以可以显示正确的中文,unicode最后转成gbk.

 

python 3.x中的所有字符的默认编码是unicode,文件的默认编码是utf-8,

encode 在编码的同时,会把数据转成bytes类型  

decode 在解码的同时,会把bytes类型转成字符串

b = byte = 字节类型 = [0-255]

s = "red 红色"
s_to_gbk = s.encode("gbk")
print(s)
print(s_to_gbk.decode("gbk"))

  

 

posted @ 2017-10-18 02:32  左手萤火  阅读(129)  评论(0)    收藏  举报