zoukankan      html  css  js  c++  java
  • python字符解码与编码

    一、为什么需要解码与编码

      1、因为不同的编码储存不同类型的字符,比如:

        1)ASCII码只能储存英文和特殊字符。

        2)gbk储存中国字符。

        3)unicode存储所有字符,所有的ASCII码占2个字节;

        4)utf8是灵活的unicode,英文特殊字符是占一个字节,中文字符占3个字节;

        5)utf8mb4是utf8的升级,中文占4个字节,解决了utf8不能存4字节的问题(比如emoji);

        6)。。。

      2、被编码成对应字符储存数据后,如果想要查看对应数据,需要将其解码为string(什么类型的编码,需要使用对应的类型来解码)

      特殊说明:windows默认编码是gbk

    二、python2和python3中的区别

      1、在python2中string和bytes是不区分的

      2、而在python3中两者是区分的,所以需要通过解码与编码来转换两者数据类型。

      3、python3 默认是unicode,支持所有格式,只是英文占用内存较大,若要转换为内存占用较小的格式(比如utf8),可以直接编码string.encode('utf-8')

    三、编码解码方式

      1、编码:string通过encode(‘编码类型’)转换为对应的bytes:

        string.encode('utf-8')编码,utf-8在python3中是默认的,python2中是根据系统编码。

      2、解码:bytes通过decode(‘编码类型’)转换为string;

        bytes_unicode_str.decode(encoding='utf-8'),为了保险,最好把'utf-8'写上。

      3、gbk类型字符串转utf-8类型字符串:

        先将字符串decode为unicode,再将Unicode encode为utf-8:

          string.decode('gbk).encode('utf-8')

      4、字符串的其他编码表示方式:

        1)utf-8可以打印Unicode,但gbk不能打印unicode,需要转换。

        2)u'string',表示是unicode类型字符串,一般用在中文字符串前面,避免因不同编码格式导致的乱码。直接decode解码会出错,因为已经是string了,就不需要解码了

        3)b'string',是bytes类型字符串,可以直接decode转换为string,但是要看b是根据什么编码方式编码的字符串,需要通过对应的解码方式解码。

      

      5、若字符串中存在部分其他编码字符,需要通过反编码方式:

        b = 'COVID-19 \u2014 Including'

        b.encode('utf-8').decode('unicode_escape')

        或者 b'COVID-19 \u2014 Including'.decode('unicode_escape')

      注:字符串必须编码后(或者是bytes类型),才能被解码

  • 相关阅读:
    C++_构造函数与析构函数
    华为模拟机试_C++题解
    OOP_由C到C++
    OOP_面向对象程序设计概述
    java ssm 后台框架平台 项目源码 websocket即时聊天发图片文字 好友群组 SSM源码
    springmvc SSM 多数据源 shiro redis 后台框架 整合
    【面经】5年Java面试亲身经验
    【快手初面】要求3个线程按顺序循环执行,如循环打印A,B,C
    手工实现HttpBasic校验
    Java 并发系列(一) ThreadPoolExecutor源码解析及理解
  • 原文地址:https://www.cnblogs.com/jaysonteng/p/12732338.html
Copyright © 2011-2022 走看看