Unicode编码相关的一个标准----UTF8

Unicode给每一个字符分配一个唯一的值,称为码点,但并不指定如何用这些值来表示原始文本。码点的形式为U+nnnn,其中nnnn指的是这个码点的十六进制值。Unicode目前支持超过100 000个字符。

UTF-8是一个Unicode相关的标准,是一种使用码点来代表原始文本的简便方法。尽管有许多表示Unicode的方法,但是UTF8具有很大优势,它向后兼容ASCII编码。UTF-8用1-4个字节来表示一个码点。每个出现ASCII字符集中的字符都被编码为一个字节,与对应的ASCII编码值是一样的。

UTF8的编码方式很直观,下面是其编码规则:

(1)如果最高有效位是0,那么这个字节的形式为0xxxxxxx,编码长度为1个字节。这个字节代表了码点,由后7位表示,它同时也代表了具有相同7位ASCII值的那个字符。

(2)如果第一个字节的最高有效位是1,那么其编码长度为2-4个字节,接下来的字节位就指示了用一元编码的长度。

         A:两字节的编码的第一个字节形式为110xxxxx

         B:三字节的编码的第一个字节形式为1110xxxx

         C:四字节的编码的第一个字节形式为11110xxx

       一个多字节编码的第二个及其后字节的形式都为10xxxxxx。通过检测任意字节的两个最高有效位,可以判断该字节是否为一个编码的起始字节。

(3)因为首字节的最高有效位被占用了,所以2-4字节编码的码点值由后面未被占用的位来决定。两字节的编码能力表示范围 U+0080  --  U+07FF内的码点。三字节的编码能表示范围U+0800 -- U+FFFF内的码点,四字节的编码能表示U+10000及以上范围内的码点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值