【字符编码】unicode与utf8的关系

【Unicode与UTF-8的关系】

Unicode是“字符集”

UTF-8是“编码规则”

        字符集就像一张表格,每一个字符都有自己固定的位置(码位);编码规则就是把字符的位置转换成计算机能处理的二进制序列。字符集unicode是固定唯一的,但是编码的方式却有很多(utf8、utf16、utf32等)。

 

【utf8】

以 8 位为一个单位的可变长编码,灵活运用 1~4个字节来存储不同的字符:

0000~007F

1个字节

0XXXXXXX

0080~07FF

2个字节

110XXXXX  10XXXXXX

0800~FFFF

3个字节

1110XXXX  10XXXXXX  10XXXXXX

10000~1FFFF

4个字节

11110XXX  10XXXXXX  10XXXXXX  10XXXXXX

        utf8作为可变长的编码,编码前面的数字(0、110、1110、11110)代表了这个字符用了多少字节表示。utf8虽然解决了兼容性问题(比如ASCII中英文字母用一个字节编码,utf8也是用一个字节),但是却带来了大量冗余。

        比如两个字节中,其实只剩11位来编码字符。字符“汉”的码位是27721,大于2­的11次方(2048),所以要用3个字节编码;而用utf16编码的话01101100   01001001,只要2个字节。

 

【utf16】

        所有字符统一用16位表示,也就是2个字节,能表示65536个字符。

        缺点是字符边界不易区分(丢失一位的话),而且unicode字符数量已经超出216了。

 

【utf32】

        所有字符统一用32位表示,每个字符都要4个字节,是非常浪费空间的。

 

【国标系列】gbk、gb2312、gb18030

        他们是中国人民对ASCII编码无法支持汉字显示这一问题的解决方案(原有ASCII编码格式的映射不变,额外加上汉字编码)。一个英文字母占一个字节,一个汉字占2个字节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值