timleee

导航

字符编码和python .encode().decode()方法

字符编码与encode、decode的问题:

 用8个开关表示世界万物

  ASCII :  American Standard Code for Information Interchange,美国信息互换标准代码,只用了前7位,127个状态

  GB2312:是对ASCII的中文扩展(前127不变,大于127的+后边另一个大于127的表示中文)两个字节表示一个汉字

  GBK:包括了GB2312 的所有内容,增加了近20000个新的汉字(包括繁体字)和符号

  GB18030:加了几千个新的少数民族的字,GBK的扩展

  以上的汉字编码标准叫做“DBCS“(Double Byte Character Set 双字节字符集)

  Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “unicode“。unicode中“字节”表示8位的物理存储单元,“字符”表示文化符号,一个汉字是一个字符,占三个字节;

 Unicode是一个字符集,UTF-8,UTF-16,UTF-32都是这个字符集上的编码方式。而ASCII,GBK等都是其它字符集,默认都只有一个对应的编码方式。

 ASCII每个字符占一个byte也就是1个字节;utf-8每个字符占1-6个变长的字节;unicode根据编码的不同所占的字节数也是不同的。

 byte(字节流)——>str: decode()方法;读取网页上的信息a=urllib.request.urlopen(url);a是一个“<class 'http.client.HTTPResponse'>”,a.read()读取网页上的内容,读取的内容是根据网页的编码方式比如(Content-Type: text/html; charset=utf-8)表示html页面是unicode字符集用utf-8的格式表示的bytes字节流,要是变成能看懂得就得用.decode()方法(decode在python3.5中默认是‘utf-8’),将bytes解码为str,这样就可以显示汉字了。

 str——>byte:用str.encode()方法;以Unicode表示的str通过encode()方法编码为指定的bytes。

posted on 2016-10-23 21:57  timleee  阅读(267)  评论(0编辑  收藏  举报