page contents

Python编码、解码小常识

有关编码、解码的基础知识

编码、解码

1.一些基本概念

  • 比特 / bit:计算机中最小的数据单位,是单个的二进制数值 0 或 1

  • 字节 / byte:计算机存储数据的单元,1 个字节由 8 个比特组成

  • 字符:人类能够识别的符号

  • 字符的标识(码位):是0-1114111的数字,在Unicode标准中以4-6个十六进制数字表示,而且加前缀“U+”。例如,字母A的码位是U+0041,欧元符号的码位是U+20AC.

  • 编码:将人类可识别的字符转换为机器可识别的字节码 / 字节序列

  • 解码:编码的反向过程叫解码

  • 概述:Unicode 是人类可识别的字符格式;ASCIIUTF-8GBK 等都是机器可识别的字节码格式。我们写在文件中的 py3代码,是由字符组成的,它们的格式,就是 Unicode,而字符是以字节为存储单位保存在文件中,文件保存在内存 / 物理磁盘中

2.编码格式

  • Python 3 的默认编码为 Unicode,可以识别中文字符

  • 计算机内存中的数据,统一使用 Unicode 编码

  • 数据传输或保存到硬盘上,使用 UTF-8 编码

3.编码转换

通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。

793034-20160506113025857-1085885850.png``

4. Python 3的默认编码

  • 例如我们用编辑器打开一个文件,输入 a,这个 a 就是 Uincode 字符。当我们保存文件,这个字符就会根据编辑器的设置被转换为对应的编码格式的字节码保存到系统硬盘。这是一个 encode 过程

  • Python 解释器执行文件时,先将文件字节码按照指定的编码格式解码为字符,然后运行程序。这是一个 decode 过程

  • 这种以 b 开头的就是字节码,一个斜杠就是一个字节。一个常用汉字用 GBK 格式编码后占 2 个字节,用 UTF-8 格式编码后占 3 个字节。因为存储或传输时,也用 UTF-8 编码,所以一个汉字占的空间就是 3 个字节

相关代码演示如下:

# 10.编码解码
s = '光辉岁月'

# 编码
print(s.encode('gbk'))
print(s.encode('utf-8'))

# 解码
g = b'\xb9\xe2\xbb\xd4\xcb\xea\xd4\xc2'.decode('gbk')
print(g)

# 字符串长度和字节码长度
print(len(s))
print(len(b'\xe5\x85\x89\xe8\xbe\x89\xe5\xb2\x81\xe6\x9c\x88'))



  • 发表于 2021-05-08 18:56
  • 阅读 ( 646 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Cara
Cara

36 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1320 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章