编码发展
计算机初始诞生于美国, 因此刚开始的 编码只有 ASCII 编码, 只有128 个, 但是足够表示所有 的英文和 其他特殊字符
后来 随着中国等其他世界国家的加入, 原来的 ASCII 明显不满足需求, 国际组织为了交流的方便, 统一了一种全新的 编码 unicode 编码 将世界所有国家的字符 都编写进入这部大字典, 每个字符都有一个码点/码位
字符集 编码规则
- 字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
- 编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)
ANSI
美国国际标准协会将不同国家和地区制定的不同的标准汇总, 因此 产生了GB2312、GBK、Big5、Shift_JIS
等各自的编码标准。这些使用 1 至 4 个字节来代表一个字符的各种汉字延伸编码方式, 称为 ANSI 编码在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS
编码。 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中
Unicode
将世界上的所有的文字和符号 用两个字节表示, 英文和浪费资源, 于是就有了 UTF-8、 UTF-16、UTF-32 等其他的编码规范
UTF-8
UTF-8 是一套以 8 位为一个编码单位的可变长编码。会将一个码位编码为 1 到 4 个字节, 英文1 个字节, 中文3个字节
说明
计算机都是通过二进制保存文件, 保存时, 当 发现 某个文字 在 Unicode 中的码点, 再通过 编码规则对每个字符进行编码 然后保存在磁盘, 读取时 也是通过对应的编码规划 解码 读取
unicode 中 既有 字符集, 又存在默认的编码规划, 所以可以通过unicode 编码方式保存文件(相当于编码方式的接口和实现都有) utf-8 相当于引用了 unicode 的包, 重写了其中的 编码方式的默认实现方式
参考文章
https://blog.csdn.net/weixin_39478524/article/details/109450954