通俗易懂的解释字符集和字符编码

字符集(至关于接口)

  • 字库表

    包含全部的字符库。
  • 码点code ponit

    标识字库表中的每一个字符的位置。(码点是不能直接使用的,还需字符集编码的实现)。
  • 例如

    • ASCII字符集
    • Unicode字符集

字符编码(至关于实现类)

定义了字符集的码点的规则。html

  • ASCII编码(ASCII字符集的一种实现)

    一个字节,包含8bit,共256种。0~127表示默认字符,128~255是扩展字符。
  • Unicode编码(unicode字符集的一种实现)

    一个英文等于两个字节,一个中文(含繁体)等于两个字节。 兼容ASCII编码,英文前一字节用00000000填充。
  • utf-8编码(unicode字符集的一种实现)

    • 是一个可变长度的默认为8bit=1byte的码点的存储方式。
    • 单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码彻底相同;
    • n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其他空位填充该字符unicode码,高位用0补足。
    1字节 0xxxxxxx 
    2字节 110xxxxx 10xxxxxx 
    3字节 1110xxxx 10xxxxxx 10xxxxxx 
    4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 
    5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 
    6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 。
    复制代码

一种字符集的可能对应仅一种或多种的字符编码实现。

unicode字符集:

  • utf-8 编码
  • utf-16 编码
  • utf-32 编码
  • ...

GBK2321字符集:

  • GBK2321编码

参考