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

  • 相关阅读:
    SaltStack概述及安装
    Zabbix高可用
    Zabbix数据库表结构
    asp select count(*) 用 open还是excute
    asp+jquery+ajax,asp后台程序执行不正常
    aspupload ,在winows server 2008 下无法使用
    jquery 如何使用innerHTML
    thinkphp的select和find的区别(转)
    centos安装PHP-pdo支持pdo
    Excel 2007 打开 UTF-8 编码 CSV 文件的乱码BUG
  • 原文地址:https://www.cnblogs.com/ExMan/p/10187677.html
Copyright © 2011-2022 走看看