程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C語言中判斷一個char*是不是utf8編碼

C語言中判斷一個char*是不是utf8編碼

編輯:關於C++

C語言中判斷一個char*是不是utf8編碼。本站提示廣大學習愛好者:(C語言中判斷一個char*是不是utf8編碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C語言中判斷一個char*是不是utf8編碼正文


C語言中判斷一個char*是不是utf8編碼

投稿:lqh

這篇文章主要介紹了C語言中判斷一個char*是不是utf8編碼的相關資料,需要的朋友可以參考下

C語言中判斷一個char*是不是utf8編碼

裡我修改了一下, 純ASCII編碼的字符串也返回true, 因為UTF8和ASCII兼容

實例代碼:

int utf8_check(const char* str, size_t length) { 
  size_t i; 
  int nBytes; 
  unsigned char chr; 
 
  i = 0; 
  nBytes = 0; 
  while (i < length) { 
    chr = *(str + i); 
 
    if (nBytes == 0) { //計算字節數 
      if ((chr & 0x80) != 0) { 
        while ((chr & 0x80) != 0) { 
          chr <<= 1; 
          nBytes++; 
        } 
        if ((nBytes < 2) || (nBytes > 6)) { 
          return 0; //第一個字節最少為110x xxxx 
        } 
        nBytes--; //減去自身占的一個字節 
      } 
    } else { //多字節除了第一個字節外剩下的字節 
      if ((chr & 0xC0) != 0x80) { 
        return 0; //剩下的字節都是10xx xxxx的形式 
      } 
      nBytes--; 
    } 
    i++; 
  } 
  return (nBytes == 0); 
} 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved