首页 > 代码库 > python字符串的编码格式

python字符串的编码格式

参考网站: http://www.cnblogs.com/siqi/archive/2012/11/10/2763598.html

 

环境:

       win7 x64

       python v2.7.10

 

 结论:

       1 当在py文件开头设置# -*- coding: utf-8 -*-时,"汗" 表示utf-8编码的字符串,u“汗”表示ucs-2格式的字符串

       2 字符串的成员函数decode,encode是相对于ucs-2来说的,即如果一个字符串的当前的编码格式是ucs-2是代表没有编码状态,其他的代表编码状态。

       3 不同的编码字符串进行转换需要先将原编码格式的字符串解码成ucs-2格式, 然后在编码成目标编码格式

       4 代表编码格式的字符串不区分大小写,并且允许前后有空格, 例如“utf-8” 跟“UTF-8” “ utf-8 ”一样

 

测试代码:

#!/usr/bin/python

# -*- coding: utf-8 -*-

def test():

    sss = "汗"

    print repr(sss)#utf-8

    

    aaa = sss.decode(‘UTF-8‘)

    print repr(aaa)#ucs-2

    

    sss = aaa.encode(‘ gb2312 ‘)

    print repr(sss)#gb2312  

if __name__ == ‘__main__‘:

    test()

 

其他相关:

HTTP响应的数据起码有三个地方可以埋藏编码信息:

1,http头中的Content-Type
2,html页面中的meta标签中指定charset
3,页面正文数据(浏览器可以解析正文二进制码来判断编码)

浏览器可以从这三个地方获得HTTP响应报文的编码,此外还有两个因素,浏览器默认编码和操作系统语言类型。

如果三者编码不一致,浏览器会首先读取http头中的content-type,若没有设定编码,再查找页面中meta标签中的charset设定,如果 还没有就以浏览器默认编码来显示,如果默认编码没有指定,浏览器会通过解析正文内容来判断编码。所以,页面是gbk编码,即便meta属性中设置 charset=utf-8,只要content-type中设定为gbk(或者GB2312、GB18030),该页面就正常显示,如果这时没有设定 content-type的编码,浏览器就会以meta中的charset属性为准,页面出现乱码。

python字符串的编码格式