python2.x编码的一些理解

https://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html

http://blog.youkuaiyun.com/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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

meadl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值