亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++實現判斷一個字符串是否為UTF8或GBK格式的方法

2020-05-23 13:37:13
字體:
來源:轉載
供稿:網友

本文實例講述了C++實現判斷一個字符串是否為UTF8或GBK格式的方法。分享給大家供大家參考,具體如下:

在處理外部數據的時候,很可能因為數據格式不一樣而導致亂碼,甚至導致某些程序掛掉。鑒于對多數系統來說,使用是更被廣泛使用的utf8,所以判斷是不是utf8格式顯得很重要了。

下面是一個判斷字符串是否為utf8的函數:

bool is_str_utf8(const char* str){  unsigned int nBytes = 0;//UFT8可用1-6個字節編碼,ASCII用一個字節  unsigned char chr = *str;  bool bAllAscii = true;  for (unsigned int i = 0; str[i] != '/0'; ++i){    chr = *(str + i);    //判斷是否ASCII編碼,如果不是,說明有可能是UTF8,ASCII用7位編碼,最高位標記為0,0xxxxxxx    if (nBytes == 0 && (chr & 0x80) != 0){      bAllAscii = false;    }    if (nBytes == 0) {      //如果不是ASCII碼,應該是多字節符,計算字節數      if (chr >= 0x80) {        if (chr >= 0xFC && chr <= 0xFD){          nBytes = 6;        }        else if (chr >= 0xF8){          nBytes = 5;        }        else if (chr >= 0xF0){          nBytes = 4;        }        else if (chr >= 0xE0){          nBytes = 3;        }        else if (chr >= 0xC0){          nBytes = 2;        }        else{          return false;        }        nBytes--;      }    }    else{      //多字節符的非首字節,應為 10xxxxxx      if ((chr & 0xC0) != 0x80){        return false;      }      //減到為零為止      nBytes--;    }  }  //違返UTF8編碼規則  if (nBytes != 0) {    return false;  }  if (bAllAscii){ //如果全部都是ASCII, 也是UTF8    return true;  }  return true;}

關于utf8的一般性簡介和二進制格式可以參考百度百科。同樣關于GBK的判斷,也是使用的同樣的方法,具體代碼如下:

bool is_str_gbk(const char* str){  unsigned int nBytes = 0;//GBK可用1-2個字節編碼,中文兩個 ,英文一個  unsigned char chr = *str;  bool bAllAscii = true; //如果全部都是ASCII,  for (unsigned int i = 0; str[i] != '/0'; ++i){    chr = *(str + i);    if ((chr & 0x80) != 0 && nBytes == 0){// 判斷是否ASCII編碼,如果不是,說明有可能是GBK      bAllAscii = false;    }    if (nBytes == 0) {      if (chr >= 0x80) {        if (chr >= 0x81 && chr <= 0xFE){          nBytes = +2;        }        else{          return false;        }        nBytes--;      }    }    else{      if (chr < 0x40 || chr>0xFE){        return false;      }      nBytes--;    }//else end  }  if (nBytes != 0) {   //違返規則    return false;  }  if (bAllAscii){ //如果全部都是ASCII, 也是GBK    return true;  }  return true;}

按照編碼規則這么寫,是正確的。但鑒于現在的utf8對于中文一般都是三個字節,而且utf8的編碼規則存在重合,如果是utf8,使用上面的這個函數,就會出現一個尷尬的問題,當中文字符為奇數個判斷正確,為則偶數個無法區別。

最后:如果誰有更好的辦法判斷一個字符串是否為GBK格式,歡迎告知。

希望本文所述對大家C++程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人亚洲成人| 日韩电影在线观看免费| 日韩男女性生活视频| 自拍偷拍亚洲一区| 九九热视频这里只有精品| xvideos亚洲人网站| 在线观看免费高清视频97| 欧美亚洲另类制服自拍| 国产精品 欧美在线| 欧美精品免费在线| 国产精品免费在线免费| 国产亚洲视频中文字幕视频| 亚洲欧美制服综合另类| 欧美一级大片在线观看| 亚洲午夜未满十八勿入免费观看全集| 成人免费视频xnxx.com| 欧美性少妇18aaaa视频| 日韩中文字幕在线观看| 91精品国产综合久久久久久蜜臀| 亚洲精品中文字| 欧美精品电影免费在线观看| 亚洲xxxxx性| 欧美风情在线观看| 久久九九有精品国产23| 亚洲日韩欧美视频一区| 欧美日韩性视频在线| 成人av资源在线播放| 九九热这里只有精品6| 日韩欧美国产一区二区| 亚洲第一精品福利| 国产日韩欧美成人| 亚洲成年网站在线观看| 亚洲视频欧洲视频| 亚洲精品乱码久久久久久按摩观| 尤物精品国产第一福利三区| 日韩高清免费观看| 欧美激情在线播放| 国产91ⅴ在线精品免费观看| 国产国语刺激对白av不卡| 日韩在线精品视频| 久久在线免费观看视频| 在线日韩欧美视频| 亚洲一区二区少妇| 91视频8mav| 亚洲香蕉伊综合在人在线视看| 性欧美长视频免费观看不卡| 久久在线视频在线| 久久精品这里热有精品| 国产午夜精品美女视频明星a级| 欧美激情女人20p| 青青草原一区二区| 国内精品国产三级国产在线专| 色一区av在线| 欧美激情在线观看视频| 亚洲精品国产精品乱码不99按摩| 国产99在线|中文| 成人午夜在线观看| 日产精品久久久一区二区福利| 热久久视久久精品18亚洲精品| 国产精品久久一区主播| 亚洲精品动漫久久久久| 久久久午夜视频| 国产精品激情自拍| 不卡av在线播放| 欧美裸体xxxx| 精品欧美aⅴ在线网站| 国内精品免费午夜毛片| 成人黄色免费网站在线观看| 亚洲xxxxx性| 亚洲国产精品99久久| 国产福利精品av综合导导航| 一区二区av在线| 中文字幕亚洲情99在线| 永久免费毛片在线播放不卡| 欧美综合国产精品久久丁香| 色综合色综合网色综合| 欧美精品福利视频| 久久久精品久久| 欧美成人自拍视频| 欧美黄网免费在线观看| 日产精品99久久久久久| 九九热最新视频//这里只有精品| 精品香蕉一区二区三区| 国产乱人伦真实精品视频| 人人做人人澡人人爽欧美| 国产精品稀缺呦系列在线| 亚洲男人7777| 精品视频偷偷看在线观看| 欧美一级淫片丝袜脚交| 97国产精品免费视频| 中文日韩电影网站| 亚洲网址你懂得| 国产a∨精品一区二区三区不卡| 海角国产乱辈乱精品视频| 亚洲色图在线观看| 国产视频精品自拍| 国产精品www网站| 欧美性猛交xxxx黑人猛交| 中文字幕亚洲图片| 国产精品成人观看视频国产奇米| 91久久久国产精品| 亚洲mm色国产网站| 美女视频黄免费的亚洲男人天堂| 一区国产精品视频| 人妖精品videosex性欧美| 国产一区二区成人| 亚洲午夜精品久久久久久性色| 岛国精品视频在线播放| 亚洲国产小视频| 91麻豆桃色免费看| 国产精品看片资源| 中文字幕日韩av| 午夜精品福利在线观看| 欧美一级免费视频| 国产精品视频在线观看| www.日韩系列| 精品免费在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 一区二区三区天堂av| 成人黄在线观看| 久久99亚洲精品| 精品国产欧美一区二区三区成人| 久久69精品久久久久久久电影好| 狠狠色狠狠色综合日日五| 一个人看的www欧美| 亚洲第一综合天堂另类专| 久久99青青精品免费观看| 欧美做爰性生交视频| 亚洲精品小视频在线观看| 亚洲国产成人久久综合一区| 精品美女久久久久久免费| 国产精品一区二区三区久久| 一区二区亚洲欧洲国产日韩| 日韩欧美精品中文字幕| 国产精品久久久久99| 亚洲欧美一区二区三区在线| 日韩小视频在线观看| 亚洲美女中文字幕| 97免费视频在线| 欧美成人精品一区二区| 国产成人精品久久亚洲高清不卡| 性色av一区二区三区红粉影视| 欧美在线观看网站| 亚洲男人av在线| 亚洲精品福利资源站| 欧美孕妇与黑人孕交| 亚洲天堂男人天堂女人天堂| 成人激情春色网| 国产精品情侣自拍| 在线丨暗呦小u女国产精品| 亚洲电影免费观看高清完整版在线| 国产精品免费一区豆花| 91av在线播放视频| 538国产精品一区二区在线| 日韩a**站在线观看| 亚洲精品一区久久久久久| 日韩电影免费观看在线| 国产一区av在线| 亚洲最大成人网色| 热re99久久精品国产66热| 欧美夫妻性生活xx| 国产精品国产福利国产秒拍| 国产精品91视频| 久久偷看各类女兵18女厕嘘嘘|