编码和日期一样,有点绕,看完几个例子你就会明白。GBK和cp2312等同,不单独列举,转载请附来源http://hi.baidu.com/z412018226
# -*- coding: gbk *-
#总体讲解:从GBK、UTF-8编码向unicode的转码为解码,函数为decode;从unicode向GBK、UTF-8为加密,函数为encode
print '\xe5\xbc\x80'
print '\xbf\xaa'
print u'\u5f00'
print len('\xe5\xbc\x80') #长度为3
print len('\xbf\xaa') #长度为2
print len(u'\u5f00') #长度为1
s1='开'
s2 = unicode(s1, "gbk") #DECODE ###GBK 转UNICODE ###在文件head编码注释为coding:utf-8时不能使用该函数,应使用s2=s1.decode('utf8')
s2 = s1.decode('gbk') #DECODE ##本句使用效果同s2 = unicode(s1, "gbk")
s3 = s2.encode('gbk') #ENCODE ->GBK ##转回GBK编码
s4 = s2.encode('UTF-8') #ENCODE ->UTF-8 ##转向UTF-8BK编码
如果上面看明白了就按继续练习一下 ,下面是文件2:
# -*- coding: utf-8 -*-
s0= u'开' ##len(s0)=1 在文件中运行时正常,但在python IDLE的shell环境调试时,会得不到你想要的结果,shell中调试可写成 s0 = u'\u5f00'
s1 = '开' ##len(s1)=3 按文件头的编码方式 此时s1为UTF-8编码
s2 = s1.decode('utf8') #从UTF-8解码为UNICODE
s11 = s2.encode("utf-8") # 从UNICODE加密为原来的UTF-8编码方式 s11==s1
s3 = s2.encode("gbk") ##从UNICODE向GBK加密
s22 = unicode(s3, "gbk") #从GBK解码为UNICODE s22==s2
其他与unicode编码解码有关的函数
ord(s0) #24320 ascii及非ascii码通吃
unichr(24320) #u'\u5f00' ascii码为chr