常见编码

learn

记事本里的常见编码(Windows 系统)
打开记事本 “另存为”,编码下拉框通常有这几个选项:
ANSI(其实是 GBK/GB2312,中文系统默认)
Unicode(通常指 UTF-16 LE)
UTF-8(现在的主流)

  1. ASCII(最古老的基础编码)
    诞生:1960 年代,美国制定。
    收录:仅英文字母、数字、标点符号(共 128 个字符)。
    存储:1 个字节(8 位)存 1 个字符。
    局限:完全不支持中文、日文等非英文。
  2. GB2312 / GBK(中文专用编码)
    GB2312(1980 年):中国制定,收录 6763 个常用汉字 + 符号。
    GBK(1995 年):GB2312 的扩展,收录 2 万多汉字(包括生僻字)+ 日韩汉字。
    存储:
    英文 / 数字:1 个字节(兼容 ASCII)。
    中文:2 个字节。
    局限:仅支持中文 / 东亚字符,存其他语言(如阿拉伯语、俄语)会乱码。
  3. UTF-8(全球通用的 “万能编码”)
    诞生:1992 年,为解决 “全球语言统一编码” 而设计(基于 Unicode 字符集)。
    收录:几乎所有人类语言的字符(中文、英文、日文、 emoji 等,共超 14 万个字符)。
    存储:可变长编码(最聪明的设计):
    英文 / 数字:1 个字节(完全兼容 ASCII,旧文件无需转码)。
    中文:通常 3 个字节(比 GBK 多占 1 字节,但换来了全球兼容性)。
    生僻字 /emoji:4 个字节。
    优势:
    全球通用:任何语言的字符都能存,不会乱码。
    节省空间:存英文时和 ASCII 一样小,比 UTF-16 省一半空间。
    互联网标准:现在 99% 的网页、代码、APP 都用 UTF-8。
  4. UTF-16(记事本里的 “Unicode”)
    存储:固定 2 个字节(或 4 个字节)存 1 个字符。
    特点:
    存中文时和 GBK 一样(2 字节),但存英文时也占 2 字节(比 UTF-8 浪费空间)。
    Windows 系统内部常用(比如记事本的 “Unicode” 选项),但互联网上用得少。
    一张表对比核心区别
    表格
    编码类型 字符覆盖范围 英文存储 中文存储 适用场景
    ASCII 仅英文 1 字节 不支持 古董系统
    GBK 仅中文 / 东亚 1 字节 2 字节 旧中文文档
    UTF-8 全球所有语言 1 字节 3 字节 现在的主流(网页、代码、APP)
    UTF-16 全球所有语言 2 字节 2 字节 Windows 系统内部
    为什么现在都推荐用 UTF-8?
    不会乱码:不管是中文、英文还是 emoji,存进去都能正常显示。
    互联网通用:所有浏览器、服务器、代码编辑器默认都是 UTF-8。
    兼容旧文件:纯英文的 ASCII 文件直接当 UTF-8 打开,完全没问题。