导航菜单

  • 1.Python介绍
  • 2.Python解释器
  • 3.安装Python
  • 4.VSCode开发Python
  • 5.print
  • 6.进制
  • 7.编码
  • 8.Unicode2UTF8
  • 9.整数类型
  • 10.字符串类型
  • 11.布尔类型
  • 12.变量与内存
  • 13.浮点类型
  • 14.注释
  • 15.if条件
  • 16.while循环
  • 17.运算符
  • 18.输入
  • 19.列表
  • 20.元组
  • 21.集合
  • 22.字典
  • 23.for循环
  • 8.1 Unicode 与 UTF-8 的区别
  • 8.2 字符的完整路径
  • 8.3 常见字符占用的字节数
  • 8.4 Python 中的常用操作
  • 8.5 项目开发要点

8.1 Unicode 与 UTF-8 的区别 #

概念 作用 类比
Unicode 为每个字符分配全球唯一的码点(如 U+4E2D) 字符的「身份证号」
UTF-8 把码点编成 1~4 字节的字节序列,用于存储和传输 身份证号的「存储格式」

Unicode 只规定「这个字符编号是多少」,不规定在磁盘上占几个字节;UTF-8 是最常用的编码方式,也是项目里的默认选择。

8.2 字符的完整路径 #

字符 → Unicode 码点 → UTF-8 字节

以汉字「中」为例:

char = "中"
print(ord(char))                    # 20013(码点十进制)
print(f"U+{ord(char):04X}")       # U+4E2D
print(char.encode("utf-8"))       # b'\xe4\xb8\xad'(3 字节)
print(char.encode("utf-8").hex()) # e4b8ad

8.3 常见字符占用的字节数 #

UTF-8 是变长编码,码点越大,字节越多:

字符示例 码点 UTF-8 字节数
A U+0041 1
中 U+4E2D 3
😀 U+1F600 4

英文和数字在 UTF-8 中与 ASCII 相同,只占 1 字节;中文通常 3 字节;Emoji 通常 4 字节。

8.4 Python 中的常用操作 #

日常开发用内置方法即可,不需要手写 UTF-8 编解码算法。

# 字符 ↔ 码点
print(ord("A"))      # 65
print(chr(0x4E2D))   # 中

# 字符 ↔ 字节
b = "你好".encode("utf-8")
print(b.decode("utf-8"))   # 你好

调试时若看到 b'\xe4\xb8\xad' 或日志里的 \xe4\xb8\xad,表示 UTF-8 编码后的字节,用 .decode("utf-8") 即可还原为可读文本。

8.5 项目开发要点 #

  1. 分清两层概念:业务里操作 str(Unicode 文本);落盘、发网络时用 encode("utf-8") 得到 bytes
  2. 不要自己实现 UTF-8:位运算、首字节规则等属于底层原理,读日志、写接口用 encode / decode 足够
  3. 与 3.3 编码章节配合:文件读写、HTTP、数据库连接统一指定 UTF-8,避免乱码
  4. 估算存储/传输大小:纯英文按 1 字节/字符粗算,中文按约 3 字节/字符粗算(精确值以 len(s.encode("utf-8")) 为准)
← 上一节 7.编码 下一节 9.整数类型 →

访问验证

请输入访问令牌

Token不正确,请重新输入