编码(encode)问题

1. UTF-8 与 GBK

UTF-8:

  • 允许含 BOM,但通常不含 BOM
  • 用以解决国际上字符的一种多字节编码,
    • 英文:8 bits(1 byte)
    • 中文:24 bits(3 bytes)
  • UTF-8 包含了世界上所有国家需要用到的字符,是国际编码,通用性强;
  • 使用 UTF-8 编码的文本可以在各国支持 UTF-8 字符集的浏览器上显示,
    • 如果使用的是 UTF-8,则外国人的英文 IE 上也能显示中文,无需下载 IE 的中文语言支持包;

GBK

  • 国家标准 GB2312 基础上扩容后兼容 GB2312 的标准。
    • GBK 的文字编码使用双字节。即不论中英,均使用双字节,
    • 为了区分中文,将其最高为都设为 1,
    • GBK 支持所有中文,是国家标准(GB:国标),通用性不如 UTF-8,不过显然 UTF-8 占用的数据库比 GBK 要大,不符合中国国情;

2. 解码歧义与前缀无歧义编码

编码方案确定后,尽管编码结果必然确定,但解码过程和结果却不见得唯一。

解码算法一般采用,按顺序对信息比特流子串匹配的策略,因此为了消除匹配的歧义性,任意两个原始字符所对应的二进制编码串,相互都不得是前缀。

反过来,只要个字符的编码串互不为前缀,则即便出现无法解码的错误,也绝对不致歧义。这类编码就是所谓的“前缀无歧义编码”(prefix-free code),简称 PFC 编码

原文地址:https://www.cnblogs.com/mtcnn/p/9423040.html