Text Encode & Decode

ASCII

ANSI(美国国家标准学会) 推出了 ASCII

ASCII 包括 0-9 a-z A-Z !”#$%… 控制字符

码点 code point

每个字符对应的数字

ASCII: 0-127(2^7)

字符集 charset

标准所支持的所有字符及其对应码点的集合,称之为字符集

编码 encode

从字符到计算机存储的的二进制的过程,称之为编码
字符编码规则不一定会把码点直接转换成二进制存储在计算机中

在 ASCII 和 UTF-32 中,会把码点直接转换为二进制

Unicode

囊括了各国文字、Emoji、象形文字的字符集

UTF-32

每个字符使用 4 字节存储,不够 32 bit 的向前补零

UTF-8

Unicode 的可变长度编码,码点越大,编码后的二进制越长

乱码的原因

  1. 编码规则与解码规则不同
  2. 部分编辑器将 Unicode 中无法识别或展示的字符自动替换为特殊符号,在保存文件时,将 EF BF BD 写入
    • Unicode 字符集中有一个特殊的替换符号,专门用于表示无法识别或展示的字符