码迷,mamicode.com
首页 > 其他好文 > 详细

如何识别字符串是否是UTF-8编码的

时间:2015-03-04 22:37:09      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

我们先要弄明白原始字符串里的字符用的是何种编码方式,运行如下


   string tmp = "你好world";
    for(int i=0;i<tmp.size();++i)
    {
        printf("%0X ",tmp.at(i));
    }

程序输出:
FFFFFFE4 FFFFFFBD FFFFFFA0 FFFFFFE5 FFFFFFA5 FFFFFFBD 77 6F 72 6C 64

很明显,原始的字符串是使用UTF-8编码的,因为它满足UTF-8的编码规则:
  1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
  2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

  1字节:0xxxxxxx
  2字节:110xxxxx 10xxxxxx
  3字节:1110xxxx 10xxxxxx 10xxxxxx
  4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

如何识别字符串是否是UTF-8编码的

标签:

原文地址:http://www.cnblogs.com/guoxiaoqian/p/4314373.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!