Python中的编码

python中的编码

原文:http://users.ir-lab.org/~liulong/blog/archives/001962.html

计算机以0,1二进制位来存储信息,所以字符在计算机中的表示也是二进制位,那每个字符所对应的二进制位是什么,在开始的计算机中因为只考虑英语, 所以不超过256个字符,即用一个字节(8bit)就足可以表示所有的字符,这个对应关系就是对字符的编码,用一个唯一的字节码来表示唯一的字符.但是随 着要对汉字,日语等其他语言的处理,这样的编码满足不了需求,各个地区,国家就针对各自的语言建立了自己的一套编码,比如gb2312,gbk,等 等....这样是解决了一部分问题,但是这就给不同的系统,平台之间的交互造成了很大的障碍,为了解决此问题,出现了unicode,它为每种语言中的每 个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本基准转换、处理的要求。每个字符都用若干个字节来表示,这样就解决了平台,系统之间 的交互问题,但是unicode有个缺点,因为它每个字符都用若干字节来表示,即使是单字节的字符,这就造成了时间和空间上的浪费,因此出现了utf,是 中间转换编码,有utf8,utf16,utf7等.出现了多种编码之后,在不同的系统,平台之间或程序接口中要涉及到编码的转换,常见的转换有:
1.unicode->其它编码
例如:a为unicode编码 要转为gb2312:a.encode('gb2312')
2.其它编码->unicode
例如:a为gb2312编码,要转为unicode: unicode(a, 'gb2312')或a.decode('gb2312')
3,编码1 -> 编码2
先转为unicode再转为编码2
如gb2312转utf8
unicode(a, 'gb2312').encode(utf-8)
目前为止我不知道如何判断一个字符的编码是何种编码,只是从程序中抛异常,等其他方式来判断,但是有可以判断是否是unicode的方法:
isinstance(s, str) 用来判断是否为一般字符串
isinstance(s, unicode) 用来判断是否为unicode
如果要把一定编码的字符序列写到文件里,只要把字符序列编码为所需编码即可,例如:
l = '刘龙'
l = unicode(l, 'cp936')
l = l.encode('utf-8')
open('test.txt','w').write(l)


····呵呵,Unicode就像一个平台,把大家都统一到一起了。但是有点浪费空间啊,所以大家决定自己到了统一平台之后再定制一下也不错。

---顺便推荐一个检测编码类型的好东西codedet:http://chardet.feedparser.org/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值