unicode和UTF-8 编码关系及转化方式

unicode和UTF-8 编码关系及转化方式

unicode

最开始的编码形式为ASCII码,一共8位,也就是只可编码最多256个字符。现在我们用了其中的128个用来编码英文字母、数字、特殊字符等共128个。
只能编码128个当然是远远不够的,因为包含不同语言等各种字符,非常庞大的一个体系。
因此,为了对所有的字符有统一的编码,就出现了Unicode编码。

要注意的是,unicode只是规定了每个符号的二进制编码,但具体怎么存储并没有规定。可以想一下,如果采用固定长度的编码存储方式,则对于一些短字节的字符来说,非常浪费空间。

因此,就出现了UTF-8,也就是说:
UTF-8是unicode的实现方式之一

unicode到UTF-8

UTF-8采用不定长的编码方式,只有两个规则:

1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。
2)对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

举例如下:
汉字“星”
查询可得其unicode编码为:661F
将其转化为二进制为:0110 0110 0001 1111
按照Unicode-UTF-8的转化规则:
确定所需的UTF-8编码字节数为3,
首先,按照规则2)确定高位(1110_ _ _ )(10 _ _ _ _ _ )(10 _ _ _ _ _)然后,从最低位开始填充unicode的二进制编码,即为
(1110 0110)(1001 1000)(1001 1111) E6989F

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值