UTF-8的一个特点是它是一种变长编码方式。它可以用1~4个字节来表示一个符号,字节长度根据不同的符号而不同。 UTF-8的编码规则很简单,只有两条:
1)对于单字节符号,字节的第一位设置为0,后7位为该符号的unicode编码。所以对于英文字母,UTF-8编码和ASCII编码是一样的。
2)对于n字节符号(n>1),第一个字节的前n位全部设为1,第n+1位设为0,后面字节的前两位全部设为10. 其余未提及的二进制位均为该符号的unicode编码。
下表总结了编码规则,字母x表示可用编码的位。
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
----------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
以汉字“严”为例,演示如何实现UTF-8编码。
已知的“严格”unicode 是 4E25 (100111000100101)。根据上表可以发现4E25在第三行(0000 0800-0000 FFFF)范围内,所以“严格”的UTF-8编码需要三个字节,即格式为“1110xxxx 10xxxxxx 10xxxxxx”。然后,从“strict”的最后一个二进制位开始,从后往前依次填入格式中的x,多余的位补0。这样,“strict”的UTF-8编码就是“11100100 10111000 10100101”,转成十六进制为E4B8A5。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何在python3中使用pip09/26
- ♥ 10 个面向全栈开发人员的优秀 Python Web 框架09/15
- ♥ python协程的作用12/08
- ♥ 如何解决python和pygame不匹配的问题11/11
- ♥ Python快捷代码片段的使用12/25
- ♥ python编程的IDE有哪些09/20
内容反馈