zoukankan      html  css  js  c++  java
  • 如何识别字符串是否是UTF-8编码的

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

    
    
       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

  • 相关阅读:
    hdoj-1004-Let the Balloon Rise(水题)
    hdoj-1827-Summer Holiday(scc+缩点)
    poj--3624--Charm Bracelet(动态规划 水题)
    HDU
    HDU
    HDU
    HDU
    【POJ1654】Area【叉积】
    【POJ1654】Area【叉积】
    【SSLOJ1715】计算面积【叉积】
  • 原文地址:https://www.cnblogs.com/guoxiaoqian/p/4314373.html
Copyright © 2011-2022 走看看