欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年06月19日 10:38:29   投稿:lqh  
這篇文章主要介紹了C語言中判斷一個char*是不是utf8編碼的相關(guān)資料,需要的朋友可以參考下

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) { //計算字節(jié)數(shù) 
      if ((chr & 0x80) != 0) { 
        while ((chr & 0x80) != 0) { 
          chr <<= 1; 
          nBytes++; 
        } 
        if ((nBytes < 2) || (nBytes > 6)) { 
          return 0; //第一個字節(jié)最少為110x xxxx 
        } 
        nBytes--; //減去自身占的一個字節(jié) 
      } 
    } else { //多字節(jié)除了第一個字節(jié)外剩下的字節(jié) 
      if ((chr & 0xC0) != 0x80) { 
        return 0; //剩下的字節(jié)都是10xx xxxx的形式 
      } 
      nBytes--; 
    } 
    i++; 
  } 
  return (nBytes == 0); 
} 

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

相關(guān)文章

  • 利用C語言的Cairo圖形庫繪制太極圖實例教程

    利用C語言的Cairo圖形庫繪制太極圖實例教程

    這幾天都在研究Cairo圖形庫,這是一個開源跨平臺的圖形庫,相對于OpenGL來說更容易上手使用。這篇文章是利用C語言的Cairo圖形庫繪制了一個太極圖,對大家學(xué)習(xí)Cairo圖形庫具有一定的參考借鑒價值,下面來一起看看吧。
    2016-12-12
  • C++ 設(shè)置透明背景圖片

    C++ 設(shè)置透明背景圖片

    這篇文章主要介紹了C++ 設(shè)置透明背景圖片的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • C++結(jié)構(gòu)體數(shù)組實現(xiàn)貪吃蛇

    C++結(jié)構(gòu)體數(shù)組實現(xiàn)貪吃蛇

    這篇文章主要為大家詳細介紹了C++結(jié)構(gòu)體數(shù)組實現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語言實現(xiàn)數(shù)獨輔助器(附源碼)

    C語言實現(xiàn)數(shù)獨輔助器(附源碼)

    數(shù)獨是源自瑞士的一種數(shù)學(xué)游戲。是一種運用紙、筆進行演算的邏輯游戲。本文將利用C語言制作一個數(shù)獨輔助器,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-01-01
  • C語言實現(xiàn)簡單的定時器

    C語言實現(xiàn)簡單的定時器

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單的定時器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • C++使用模板實現(xiàn)單鏈表(類外實現(xiàn))

    C++使用模板實現(xiàn)單鏈表(類外實現(xiàn))

    這篇文章主要為大家詳細介紹了C++使用模板實現(xiàn)單鏈表的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 從頭學(xué)習(xí)C語言之指針和數(shù)組

    從頭學(xué)習(xí)C語言之指針和數(shù)組

    這篇文章主要為大家詳細介紹了C語言之指針和數(shù)組,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C語言深入分析浮點型數(shù)據(jù)存儲

    C語言深入分析浮點型數(shù)據(jù)存儲

    使用編程語言進行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個變量時,就會在內(nèi)存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲什么
    2022-08-08
  • C++數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)鄰接表與鄰接矩陣的相互轉(zhuǎn)換

    C++數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)鄰接表與鄰接矩陣的相互轉(zhuǎn)換

    這篇文章主要為大家學(xué)習(xí)介紹了C++如何實現(xiàn)鄰接表與鄰接矩陣的相互轉(zhuǎn)換,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • C語言 數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組模擬實現(xiàn)順序表流程詳解

    C語言 數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組模擬實現(xiàn)順序表流程詳解

    順序表,全名順序存儲結(jié)構(gòu),是線性表的一種,線性表用于存儲邏輯關(guān)系為“一對一”的數(shù)據(jù),順序表自然也不例外,不僅如此,順序表對數(shù)據(jù)的物理存儲結(jié)構(gòu)也有要求,跟隨下文來具體了解吧
    2021-11-11

最新評論