Unicode到UTF-8的转换:求解,这个过程的最后一步看不懂了
Unicode符号范围(十六进制)UTF-8编码方式(二进制)00000000~0000007F0xxxxxxx00000080~000007FF110xxxxx10xx...
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 1110xxx 10xxxxxx 10xxxxxx 10xxxxxx
以“严”字为例,演示如何实现UTF-8编码。
已知“严”字的unicode编码是4E25(1001110 00100101),根据上表可知4E25处在第三行的范围内(0000 0800-0000 FFFF),因此“严”字的UTF-8编码需要三个字节,即格式为“1110xxxx 10xxxxxx 10xxxxxx”。然后,【从“严”字的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0】。这样就得到了“严”字的UTF-8编码“11100100 10111000 10100101”,转换成十六进制就是E4B8A5,转换成十六进制的目的是方便阅读。
填入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 1110xxx 10xxxxxx 10xxxxxx 10xxxxxx
以“严”字为例,演示如何实现UTF-8编码。
已知“严”字的unicode编码是4E25(1001110 00100101),根据上表可知4E25处在第三行的范围内(0000 0800-0000 FFFF),因此“严”字的UTF-8编码需要三个字节,即格式为“1110xxxx 10xxxxxx 10xxxxxx”。然后,【从“严”字的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0】。这样就得到了“严”字的UTF-8编码“11100100 10111000 10100101”,转换成十六进制就是E4B8A5,转换成十六进制的目的是方便阅读。
填入x?咋填呀?用什么填?用“严”字的Unicode的二进制编码向UTF-8的二进制编码填?我这么填和给的结果也对不上呀,求解 展开
3个回答
推荐于2016-12-02 · 知道合伙人软件行家
关注
展开全部
1: UTF stands for UCS Transformation Format, where UCS stands for Universal Character Set.
2:utf-8 是unicode 这种编码的储存格式(以一到三个字节“存放”一个字符--理论上可以达到六个)
3: unicode 是编码。Unique, Universal, and Uniform character encoding--它在概念上与ISO 10646标准相对应 (目前版本UCS-2以两字节‘描述’一个字符)
4: 根据上面所述:可以根据unicode/UCS-2的编码特性(与ASCII编码在字面上“相等”)得知将一个 ASCII 或 Latin-1 的文件转换成 UCS-2 只需简单地在每个 ASCII 字节前插入 0x00。反之去处0x00。
5:而一个unicode格式的文本要转为utf-8格式的文本,那么根据下图所示:
U-00000000 - U-0000007F: 0xxxxxxx
U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
==================================================================
以上是对一些概念的阐述,
而下面这几个语句/表达式的解释:
<0x80 //逻辑判断,字面意思:判断是否小于0x80,(即判断是否为一个ascii字符)
&0xff //位运算 ,字面:将相应的位置“0”,(按照utf-8的格式设置“前缀”/“前导”)
2:utf-8 是unicode 这种编码的储存格式(以一到三个字节“存放”一个字符--理论上可以达到六个)
3: unicode 是编码。Unique, Universal, and Uniform character encoding--它在概念上与ISO 10646标准相对应 (目前版本UCS-2以两字节‘描述’一个字符)
4: 根据上面所述:可以根据unicode/UCS-2的编码特性(与ASCII编码在字面上“相等”)得知将一个 ASCII 或 Latin-1 的文件转换成 UCS-2 只需简单地在每个 ASCII 字节前插入 0x00。反之去处0x00。
5:而一个unicode格式的文本要转为utf-8格式的文本,那么根据下图所示:
U-00000000 - U-0000007F: 0xxxxxxx
U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
==================================================================
以上是对一些概念的阐述,
而下面这几个语句/表达式的解释:
<0x80 //逻辑判断,字面意思:判断是否小于0x80,(即判断是否为一个ascii字符)
&0xff //位运算 ,字面:将相应的位置“0”,(按照utf-8的格式设置“前缀”/“前导”)
追问
前辈您好,规则里说找到范围后让补上相应的x,但是没说用什么补呀
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编码(Unicode,UTF-8,GBK)转换工具
搜索
编码(Unicode,UTF-8,GBK)转换工具
搜索
编码(Unicode,UTF-8,GBK)转换工具
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询