【字符编码系列之四】Unicode实现之UTF-8详解

在开始本篇文章之前,我默认大家已经区分好了Unicode编码(也就是代码点)和Unicode编码具体实现之间的区别。要不然,下面讲的你会不知所云的。

历史

我们知道,ISO 10646委员会定义了一个叫做Universal Character Set (UCS)的超级字符集,以囊括世界上所有的书写系统。正因为UCS现在是用4个字节编码,而实现它的则是UTF-16和UTF32之类的方案,正因这些实现方案(注意,非编码方案)是多字节的,所以导致它不兼容US-ASCII相关的系统。UTF-8也因此而诞生。UTF-8的使命之一就是对于ASCII表示的字符,本方案的编码要和ASCII完全一样。


历史上曾经的UTF-8用1~6个字节来编码字符,也就是说,与此对应的抽象代码点可以达到U+7FFFFFFF。但是人们发现,对于代码点来说,根本用不到4个字节编码,只用21位就可以完全包含世界上所有的书写系统了,即合法代码点为0x0000~0x10FFFF。所以随着Unicode规定合法的代码点范围是0x0000 0000 ~0x0010 FFFF,RFC 3629宣布,以前的UTF-8(RFC 2279)标准作废,新标准中UTF-8用1~4个字节来编码字符。


对于Unicode相关的编码,总共有五种:UTF-8, UCS-2, UTF-16, UCS-4 and UTF-32.要是有人非要加上UTF-7那也可以吧。
本系列后续文章会依次讲到上述所有实际编码方案。


UTF-8

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值