发展历史: ACSII->GBK->UNICODE

  • 半角字符:一个字节
  • 全角字符:2个字节

GBK,UNICODE均为一种符号集,而UTF-8为一种编码方式,用于传输数据

字符集

ASCII

通过一个字节,即8位来表示128中状态,最前面的1位统一为1

GBK

由于基于ASCII的符号集不能表示中文字符,故对于中文字符采用2个字节表示。
一个字节<127的字符意义不变,对于两个同时>127的字节,代表的为中文汉字。

  • 改进-1:限定第一个字节>127,便表示为一个汉字的开始

    UNICODE

    只是一个符号集,可容纳全世界所有语言符号的符号集,仅仅规定了符号的二进制代码。
    没有规定代码该如何存储!

  • 如何区别unicode和ascii?

  • 如何区别三个字节表示一个符号,而不是分别表示三个符号

故这时候UTF-8 UTF-16等编码方式便出来了,规定了unicode字符集到UTF的映射方式

编码方式

UTF-8

一种编码方式,一个字节包含8bit; 特点:变长的编码方式,使用1~6个字节表示一个符号

编码规则:
X为补位符号,用UNICODE码填补
UNICODE,GBK,UTF-8区别 - 图1

大端和小端

以汉字”严”为例, Unicode码
是4E25, 需要用两个字节存储, 一个字节是4E, 另一个字节是25. 存储的时候, 4E在前,
25在后, 就是Big endian方式; 25在前, 4E在后, 就是Little endian方式.
// Big Endian(4E25) Little Endian(254E)

如何确定大小端

每一个文件最前面会加入一个表示编码顺序的字符
// Big Endian(FEFF) Little Endian(FFFE)
*
` ``
注意:<br /> * 1. UTF8没有字节序问题, 但是Unicode有字节序要求;`<br />` 字节序分为大端(Big Endian)和小端(Little Endian)两种;<br /> `` 在Intel处理器中采用小端法表示, 在此采用小端法表示. (低地址存低位)`