计算机基础:编码字符集

当字符的编码格式和解码格式不一致时,会出现乱码。

非统一编码

ASCII

美国国家标准学会(American National Standard Institute, ANSI)制定。

包含英文字母、数字和常用符号的编码。

  1. 使用 1 个字节,编码范围从 0127,最高位始终为 0
  2. 示例
    • 字符 A 编码是 0x41
    • 字符 1 编码是 0x31

GB2312

ASCII 编码使用 1 个字节,不足以表示其它国家的语言。

因此其它语言也有相应的编码标准。

  1. 使用 2 个字节表示一个汉字,首个字节的最高位始终为 1
  2. 示例
    • 汉字 编码是 0xd6d0
    • 类似的,日文有 Shift_JIS 编码,韩文有 EUC-KR 编码。

统一编码

Unicode

不同国家编码的标准不统一,同时使用则会产生冲突。

为了统一全球主要语言的编码,全球统一码联盟发布 Unicode 编码。

  1. 使用 2 个或更多字节表示。

  2. 示例

    1. 英文字符:ASCII 字符在首部添加 00 字节。

               ┌────┐
      ASCII:   │ 41 │
               └────┘
               ┌────┬────┐
      Unicode: │ 00 │ 41 │
               └────┴────┘
      
    2. 中文字符

               ┌────┬────┐
      GB2312:  │ d6 │ d0 │
               └────┴────┘
               ┌────┬────┐
      Unicode: │ 4e │ 2d │
               └────┴────┘
      

UTF-8

英文字符 Unicode 编码的高字节总是 00,浪费空间。

UTF-8 是一种变长编码

  1. 节省空间: 使用 1-4 字节
    1. 英文字符 A 编码 0x41,与 ASCII 码一致。
    2. 中文字符 编码 0xe4b8ad
  2. 容错能力强:若传输过程中某些字符出错,不会影响后续字符。
    1. UTF-8 编码依靠高字节位来确定一个字符有几个字节。
    2. 常用作传输编码。
posted @ 2023-02-22 00:01  Jaywee  阅读(49)  评论(0编辑  收藏  举报

👇