直接回答:Unicode 是字符集标准:为全球每个字符分配唯一编号(码点,code point),如"中"是 U+4E2D。UTF-8 是把码点编码成字节序列的一种具体方案。一个是"字典",一个是"存储格式"。

展开解析:UTF-8 是变长编码,按码点范围用 1~4 个字节表示:

  • ASCII 字符(U+0000~U+007F)占 1 字节,与 ASCII 完全兼容;
  • 常用汉字(如"中")占 3 字节;
  • 高位码点(部分 emoji、生僻字)占 4 字节。

它因此成为互联网主流编码(无字节序问题、ASCII 文档零浪费)。同属 Unicode 编码方案的还有 UTF-16(2 或 4 字节,Java/Windows 内部使用)和 UTF-32(定长 4 字节,空间浪费大)。

Python 中的体现

s = "中"            # Python 3 的 str 是 Unicode 码点序列
b = s.encode("utf-8")  # b'\xe4\xb8\xad',3 个字节
b.decode("utf-8")      # 还原为 "中"

易错点len("中") 是 1(按字符),但 len("中".encode()) 是 3(按字节);读写文件忘记指定编码是乱码的头号来源。追问:UCS、BOM 与大小端、emoji 组合字符的长度问题。