从Unicode码推导出其对应的UTF-8码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/jinjiankang/article/details/93031654

1、Unicode码区间与UTF-8编码对应关系:

区间 Unicode符号范围(十六进制) UTF-8编码方式(二进制)
1 0000 0000 到 0000 007F 0xxxxxxx
2 0000 0080 到 0000 07FF 110xxxxx 10xxxxxx
3 0000 0800 到 0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
4 0001 0000 到 0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

2、以“严”字为例

通过这个网站可以查到“严”字的Unicode码是十六进制数:4E25,通过观察可以得知,它落在第3区间。通过在线进制转换工具,可以得到其对应的二进制数为:100111000100101。下图说明了如何根据二进制数转换为UTF-8编码:

  1. 将1填充到①、2填充②、3填充到③。
  2. ④处没有可填充的二进制数了,按规则补零。
  3. 得到“严”字的UTF-8编码:11100100 10111000 10100101,这里的空格仅仅是方便你查看,实际上是没有空格的。转为16进制为:E4B8A5。
  4. 可以在线生成“严”字的UTF-8编码:E4B8A5,和我们分析的结果一致。
    在这里插入图片描述

3、以A为例

A的ASCII码是十进制的65,十六进制的41或0041。通过观察上文中的表格可以得知,它落在第1区间。十进制的65对应的二进制数为:1000001。下图说明了如何根据二进制数转换为UTF-8编码:
在这里插入图片描述

  1. 将1填充到①。
  2. 得到“A”字的UTF-8编码:01000001,转为16进制为41,等同于其ASCII码。
  3. 可以在线生成“A”字的UTF-8编码:41,和我们分析的结果一致。

参考资料
1、http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
2、https://www.cnblogs.com/leesf456/p/5317574.html

猜你喜欢

转载自blog.csdn.net/jinjiankang/article/details/93031654