解码和编码

解码和编码

  • 计算机中存储的信息都是二进制的
  • 编码/解码本质上是一种映射(对应关系),比如‘a’用ascii编码则是65,计算机中存储的就是00110101
  • 编码:真实字符与二进制串的对应关系,真实字符→二进制串
  • 解码:二进制串与真实字符的对应关系,二进制串→真实字符

ASCII & UTF-8

  • ASCII以1字节8个bit位表示一个字符,首位全是0
  • unicode编码系统是为表达任意语言而设计的,为了防止存储上的冗余(比如,对应ascii码的部分),其采用了变长编码,但变长编码给解码带来了困难,无法判断是几个字节表示一个字符
  • UTF-8是针对unicode变长编码设计的一种前缀吗,根据前缀可判断是几个字节表示一个字符

最佳实践

  • 创建一个工程之后先确认该工程的字符编码是否已经设置为UTF-8
  • 为了兼容Python2和Python3,在代码头部声明字符编码:-- coding:utf-8 --

示例

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-

    a = '你好'
    b = u'你好'
    c = '你好'.encode('gbk')

    print(type(a), len(a))
    print(type(b), len(b))
    print(type(c), len(c))

    输出结果:
    <class 'str'> 2
    <class 'str'> 2
    <class 'bytes'> 4

Python3

  • Python3中定义的字符串默认就是unicode,因此不需要先解码,可以直接编码成新的字符编码

      #!/usr/bin/env python
      # -*- coding:utf-8 -*-
    
      utf_8_a = '我爱中国'
      gbk_a = utf_8_a.encode('gbk') ## gbk_a = utf_8_a.decode('utf-8').encode('gbk')
      print(gbk_a.decode('gbk'))
    
      输出结果:
      我爱中国
    

参考

python中的编码与解码
Python中的字符串与字符编码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值