美文网首页
字符编码-python

字符编码-python

作者: 狗狗胖妞 | 来源:发表于2017-03-21 17:03 被阅读10次

    在python2.7下字符编码的问题

    #--*-- coding:utf-8 --*-- 
    s="你好"                     ##2.7就看第一行写啥
    s_to_unicode=s.decode("gbk")
    print s_to_unicode
    

    结果为:浣犲ソ 其实这句话s_to_unicode=s.decode("gbk"),就相当于你非要用记事本打开word一样,没什么意义
    s还是utf-8的编码格式,但你非要使用gbk的转码包,gbk的字节范围时包含utf-8的,但打开的是乱码而已,毕竟对应关系不一样

    1 s="你好"
    2 s_to_unicode=s.decode("gbk")
    3 print s_to_unicode
    

    如果没有第一行就会报错了,此时s将使用默认的ascii来存储,但ascii的字节范围是1个字节,无法保存的,就会报错了
    http://www.cnblogs.com/work115/p/5924446.html

    在python2中进行编码和解码的时候,不指定编码方式,那么python就会使用defaultencoding
    1 #--*--coding:utf-8--
    2 s="你好"
    3 #: s是一个utf-8格式的字符串
    4 u=s.decode("utf-8")
    5 #: s被解码为unicode对象,赋给u
    6 sg=u.encode("gbk")
    7 #:  u被编码为gbk格式的字符串,赋给sg
    8 print sg
    
    1 #--*--coding:utf-8--*--
    2 s="你好"
    3 ss=s.encode("gbk")
    4 print ss
    

    上面的代码会报错,报错信息:'ascii' codec can't decode byte......
    因为没有指定defaultencoding,所以其实在做这样的事情:s.decode('ascii').encode('gbk')
    (ascii解码包是无法解码utf-8的)

    设置defaultencoding代码如下:

    1 reload(sys)
    2 sys.setdefaultencoding('utf-8')
    

    当然这些主要是在python2.x下的问题,没有特殊需求就用python3吧

    python3默认的字符编码为unicode

    相关文章

      网友评论

          本文标题:字符编码-python

          本文链接:https://www.haomeiwen.com/subject/qtugnttx.html