免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2922 | 回复: 3
打印 上一主题 下一主题

[C] UTF-8编码能保证字符串中不会用到ASCII的码值吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-05 23:22 |只看该作者 |倒序浏览
这里说的ASCII指的是0-127的那段,UTF-8在编码的时候,比如一个中文汉字,他可能会用到几个字节,而这些字节中会不会用到0-127内的那些值呢?
还有就是gb2321这些ASCII编码会不会用到呢?

比如C中的NUL字符。

TIA

论坛徽章:
0
2 [报告]
发表于 2010-10-11 23:17 |只看该作者
回答第一个问题:
不会。用到几个字节的话,这几个字节最高位都为1

一下内容摘自Wiki

UTF-8编码字节含义

    * 对于UTF-8编码中的任意字节B,如果B的第一位为0,则B为ASCII码,并且B独立的表示一个字符;
    * 如果B的第一位为1,第二位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的一个字节,并且不为字符的第一个字节编码;
    * 如果B的前两位为1,第三位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由两个字节表示;
    * 如果B的前三位为1,第四位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由三个字节表示;
    * 如果B的前四位为1,第五位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由四个字节表示;

因此,对UTF-8编码中的任意字节,根据第一位,可判断是否为ASCII字符;根据前二位,可判断该字节是否为一个字符编码的第一个字节; 根据前四位(如果前两位均为1),可确定该字节为字符编码的第一个字节,并且可判断对应的字符由几个字节表示;根据前五位(如果前四位为1),可判断编码是否有错误或数据传输过程中是否有错误。

论坛徽章:
0
3 [报告]
发表于 2010-10-12 08:48 |只看该作者
UTF-8编码的汉字的确不会用到ASCII码的部分,而且UTF-8本身是兼容ASCII的,ASCII码可以看成UTF-8码的一部分。

论坛徽章:
0
4 [报告]
发表于 2010-10-12 09:33 |只看该作者
不会的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP