zoukankan      html  css  js  c++  java
  • python编码encode和decode

    计算机里面,编码方法有很多种,英文的一般用ascii,而中文有unicode,utf-8,gbk,utf-16等等。

    unicode是 utf-8,gbk,utf-16这些的父编码,这些子编码都能转换成unicode编码,然后转化成子编码,例如utf8可以转成unicode,再转gbk,但不能直接从utf8转gbk

    所以,python中就有两个方法用来解码(decode)与编码(encode),解码是子编码转unicode,编码就是unicode转子编码

    1.编码

    #encoding=utf-8
    c=u'u5f00u59cbu6267u884cu66f4u65b0u547du4ee4'
    print c
    print c.encode('utf8') print c.encode('gbk')

    在这里,文件的编码方式为utf8,控制台的编码方式是utf8
    变量c是一个unicode编码的字符串(需要在引号前面加u)

    输出的结果为:

    开始执行更新命令
    开始执行更新命令
    ��ʼִ�и�������

    因为控制台是utf8编码,所以unicode编码和utf8编码都能识别,但是gbk就不可以了
    2.解码

    #encoding=utf-8
    a = '中文'
    print a.decode('g')
    print [a.decode('g')]

    这里a为utf8编码,decode方法将utf8解码为unicode编码
    输出结果:

    中文
    [u'u4e2du6587']

    由于控制台能识别unicode编码,所以需要把字符串放在列表里面才能看到unicode源码

    #encoding=utf-8
    a = '中文'
    print [a.decode('gbk')]

    因为a是utf8编码的,如果将a用gbk解码,程序就会报错

    UnicodeDecodeError: 'gbk' codec can't decode bytes in position 2-3: illegal multibyte sequence
    a = '中文'
    print a.decode('utf-16')

    如果用utf-16解码方法解码utf-8的字符串,程序并不会报错(可能因为它们的编码方式相似),但是返回的是乱码:

    룤�螖

    如果一个字符串为unicode码,又没有u标识,可以这样来转换成中文

    a='u8054u76dfu533a'
    b="u'%s'"%a
    
    print eval(b)

    后记

    1.如果想知道一个字符串是什么编码,可以print [字符串] 来看二进制码 

    [u'u76eeu6807u533au670d']
    ['xe7x9bxaexe6xa0x87xe5x8cxbaxe6x9cx8d']

    第一个是unicode,第二个是utf-8

  • 相关阅读:
    HTML DOM教程 14HTML DOM Document 对象
    HTML DOM教程 19HTML DOM Button 对象
    HTML DOM教程 22HTML DOM Form 对象
    HTML DOM教程 16HTML DOM Area 对象
    ubuntu 11.04 问题 小结
    VC6.0的 错误解决办法 小结
    boot.img的解包与打包
    shell里 截取字符串
    从零 使用vc
    Imagemagick 对图片 大小 和 格式的 调整
  • 原文地址:https://www.cnblogs.com/ExMan/p/10187677.html
Copyright © 2011-2022 走看看