UTF-8的编码规则

UTF-8的编码规则:
1、对于单字节的字符,字节的第一位设为0,后面七位为这个字符的Unicode码。
因此对于英文字符,UTF-8编码和ASCII码是相同的。

2、对于n字节的字符(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的
前两位一律设为10。剩下的没有提及的二进制位,全部为这个字符的Unicode编码。

UTF-8每次传送8位数据,并且是一种可变长的编码格式
具体来说,是怎么的可变长呢.

分为四个区间:
0x0000 0000 至 0x0000 007F:0xxxxxxx
0x0000 0080 至 0x0000 07FF:110xxxxx 10xxxxxx
0x0000 0800 至 0x0000 FFFF:1110xxxx 10xxxxxx 10xxxxxx
0x0001 0000 至 0x0010 FFFF:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

UTF-8解码过程:

对于采用UTF-8编码的任意字符B

如果B的第一位为0,则B为ASCII码,并且B独立的表示一个字符;

如果B的前两位为1,第三位为0,则B为一个非ASCII字符,该字符由多个字节表示,
并且该字符由两个字节表示;

如果B的前三位为1,第四位为0,则B为一个非ASCII字符,该字符由多个字节表示,
并且该字符由三个字节表示;

比如汉字 “王”,它的二进制形式为: 0x0000 738B,属于第三区间,
0x0000 738B - 00000000 00000000 01110011 10001011,
第三区间的编码是 1110xxxx 10xxxxxx 10xxxxxx
把x都给替换,则最终"王"字对应的Unicode的编码是
11100111 10001110 10001011
转换成16进制 0xe7 0x8e 0x8b

如果B的前四位为1,第五位为0,则B为一个非ASCII字符,该字符由多个字节表示,
并且该字符由四个字节表示;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuechanba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值