首页 > 编程语言 > 详细

python字符解码与编码

时间:2020-04-19 18:36:07      阅读:45      评论:0      收藏:0      [点我收藏+]

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

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

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

    2)gbk储存中国字符。

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

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

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

    6)。。。

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

 

二、python2和python3中的区别

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

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

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

 

三、编码解码方式

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

    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解码会出错,因为已经是Unicode了,就不需要解码了

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

  

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

    b = ‘COVID-19 \\u2014 Including‘

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

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

  注:字符串必须编码后,才能解码

 

python字符解码与编码

原文:https://www.cnblogs.com/jaysonteng/p/12732338.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!