您的位置:首页 > 编程语言 > Python开发

python2.x编码的一些理解

2018-01-18 01:19 239 查看
https://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html

http://blog.csdn.net/q_l_s/article/details/51253542

版本 Python2.7

1.序言

   Python的字符编码方式有多种,主要默认用的为utf-8变长编码,而windows的默认编码方式为gbk,如果没有理解错的话,应该是utf-8这种编码方式兼容GBK码和ASCII码,GBK码是对ASCII码的一种扩展,GBK全名为《汉字内码扩展规范》,专门针对汉字的编码。

2.python里的字符串编码

编码函数:encode,字面意思就是编码;
解码函数:decode
重点:python里字符串的两种type类型,一种为Unicode,一种为str;Unicode可以理解为字符串序列,长度len为字符个数;str可以理解为字节串序列,长度len为所占用的字节数。
2.1 全英文字符串对Python里出现的定义的字符串语句,如name="xiaoming"用type函数查看类型为str,这里编码方式为utf-8;可以使用编解码函数转换为gbk编码,占用字节数都一样,而且随意使用编解码函数与编解码方式不会报错。有兴趣的可以自己试一下。
2.2 汉字字符串(或者含有汉字的英文字符串)代码开头需要#coding=utf-8
若定义name="小明",字符串类型仍然为str,编码方式为utf-8,字符串长度为6,其实即为占用字节数为6:
a.想要转换为unicode,需经过utf-8解码decode,转换以后长度为2,2个字符;
b.不能对其进行任何方式的编码encode;
c.想转换成gbk,先需要转成unicode,然后进行gbk方式编码encode,此时字符串长度为4,占用的字节数。
d.转换成gbk码,可以以其方式进行解码decode为Unicode;
e.utf-8的编码序列和gbk的编码序列不能相互直接以任一种方式编解码。
下图说明:



总之,对于有汉字的字符串,unicode转str(utf-8或gbk),就是相当于用字节来表示字符,就是属于编码encode,反之为解码decode。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: