UNICODE UTF8

UTF-8(Unicode Transformation Format - 8-bit)是 Unicode 的一种编码方式,是 Unicode 中字符的具体表示形式。

可以简单理解为:

Unicode 是字符的“字典”,规定每个字符有一个唯一的编号。
UTF-8 是编码方式,负责将这些编号转换为计算机能够理解的字节序列。

UNICODE

UNICODE 编码就是解决这类问题:对于地球上任意一个字符,都给它一个唯一的数值。

UNICODE 编码实现

所谓编码实现,就是对于一个数值,怎么表示它。这很奇怪,数值还能怎么表示?怎么表示一个 UNICODE 数值?

  1. 使用 3 个字节表示一个 UNICODE

    不,太浪费。使用 3 个字节来表示一个 UNICODE 数
    值?这当然是很省事的方法,但是会造成浪费,比如字符 A 的 UNICOCDE 值是0x41,难道也用“0x41 0x00 0x00”这 3 个字节来表示?

  2. UCS-2 Little endian/UTF-16 LE

    每个 UNICODE 值用 3 字节来表示有点浪费,那只用 2 字节呢?它可以表示2^16=65536 个字符,全世界常用的字符都可以表示了。

  3. UCS-2 Big endian/UTF-16 BE

    Big endian 表示大字节序,数值中权重低的字节放在后面,比如字符“ab中”在 TXT 文件中的数值如下,其中的“A”使用“0x00 0x41”两字节表示;“中”使用“0x4e 0x2d”两字节表示。文件开头的“0xfe 0xff”表示“UTF-16 BE”。

  4. UTF8

    在上面 2 种方法中,每一个 UNICODE 使用 2 字节来表示,这有 3 个缺点:表示的字符数量有限、对于 ASCII 字符有空间浪费、如果文件中有某个字节丢失,这会使得后面所有字符都因为错位而无法显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值