UNICODE UTF8
文章目录
- UNICODE
- UNICODE 编码实现
UTF-8(Unicode Transformation Format - 8-bit)是 Unicode 的一种编码方式,是 Unicode 中字符的具体表示形式。
可以简单理解为:
Unicode 是字符的“字典”,规定每个字符有一个唯一的编号。
UTF-8 是编码方式,负责将这些编号转换为计算机能够理解的字节序列。
UNICODE
UNICODE 编码就是解决这类问题:对于地球上任意一个字符,都给它一个唯一的数值。
UNICODE 编码实现
所谓编码实现,就是对于一个数值,怎么表示它。这很奇怪,数值还能怎么表示?怎么表示一个 UNICODE 数值?
-
使用 3 个字节表示一个 UNICODE
不,太浪费。使用 3 个字节来表示一个 UNICODE 数
值?这当然是很省事的方法,但是会造成浪费,比如字符 A 的 UNICOCDE 值是0x41,难道也用“0x41 0x00 0x00”这 3 个字节来表示? -
UCS-2 Little endian/UTF-16 LE
每个 UNICODE 值用 3 字节来表示有点浪费,那只用 2 字节呢?它可以表示2^16=65536 个字符,全世界常用的字符都可以表示了。
-
UCS-2 Big endian/UTF-16 BE
Big endian 表示大字节序,数值中权重低的字节放在后面,比如字符“ab中”在 TXT 文件中的数值如下,其中的“A”使用“0x00 0x41”两字节表示;“中”使用“0x4e 0x2d”两字节表示。文件开头的“0xfe 0xff”表示“UTF-16 BE”。
-
UTF8
在上面 2 种方法中,每一个 UNICODE 使用 2 字节来表示,这有 3 个缺点:表示的字符数量有限、对于 ASCII 字符有空间浪费、如果文件中有某个字节丢失,这会使得后面所有字符都因为错位而无法显示。