utf8判斷字元

2021-09-10 02:43:08 字數 2337 閱讀 8715

utf8的規則比較簡單:

通過二進位制表示如下:

0******x (一位的情況,為ascii)

110***xx 10****** (110開頭,代表兩位)

1110***x 10****** 10****** (1110開頭代表三位)

11110*** 10****** 10****** 10****** (11110開頭代表四位)

111110xx 10****** 10****** 10****** 10****** (111110開頭,代表五位)

1111110x 10****** 10****** 10****** 10****** 10****** (1111110開頭,代表六位)

符合以上規則的,就代表為符合utf8編碼規則,否則為不符合

**實現如下:

bool isutf8(char* rawtext) 

else if (-64 <= rawtext[i] && rawtext[i] <= -33

//兩位編碼的情況,第一位11000000--11011111

//後一位跟10000000--10111111

&&i + 1 < rawtextlen

&& -128 <= rawtext[i + 1] && rawtext[i + 1] <= -65)

else if (-32 <= rawtext[i]&& rawtext[i] <= -17

//三位編碼的情況,第一位11100000--11101111

//後兩位跟10000000--10111111

&&i + 2 < rawtextlen

&& -128 <= rawtext[i + 1] && rawtext[i + 1] <= -65

&& -128 <= rawtext[i + 2] && rawtext[i + 2] <= -65)

else if(-16 <= rawtext[i]&& rawtext[i] <= -9

//四位編碼的情況,第一位11110000--11110111

//後三位跟10000000--10111111

&&i + 3 < rawtextlen

&& -128 <= rawtext[i + 1] && rawtext[i + 1] <= -65

&& -128 <= rawtext[i + 2] && rawtext[i + 2] <= -65

&& -128 <= rawtext[i + 3] && rawtext[i + 3] <= -65)

else if(-8 <= rawtext[i]&& rawtext[i] <= -5

//五位編碼的情況,第一位11111000--11111011

//後四位跟10000000--10111111

&&i + 4 < rawtextlen

&& -128 <= rawtext[i + 1] && rawtext[i + 1] <= -65

&& -128 <= rawtext[i + 2] && rawtext[i + 2] <= -65

&& -128 <= rawtext[i + 3] && rawtext[i + 3] <= -65

&& -128 <= rawtext[i + 4] && rawtext[i + 4] <= -65)

else if(-4 <= rawtext[i]&& rawtext[i] <= -3

//六位編碼的情況,第一位11111100--11111101

//後五位跟10000000--10111111

&&i + 5 < rawtextlen

&& -128 <= rawtext[i + 1] && rawtext[i + 1] <= -65

&& -128 <= rawtext[i + 2] && rawtext[i + 2] <= -65

&& -128 <= rawtext[i + 3] && rawtext[i + 3] <= -65

&& -128 <= rawtext[i + 4] && rawtext[i + 4] <= -65

&& -128 <= rawtext[i + 5] && rawtext[i + 5] <= -65)

}if (asciibytes == rawtextlen)

score = 100 * goodbytes / (rawtextlen - asciibytes);

//如果匹配率達到98%以上,則成功

//允許一部分髒資料

if (score > 98)

else if (score > 95 && goodbytes > 30)

else

}

網頁utf 8亂碼 utf8亂碼

複製 在前 在windows作業系統上使用ie作為瀏覽器時。常常會發生這樣的問題 在瀏覽使用utf 8編碼的網頁時,瀏覽器無法自動偵測 即沒有設定 自動選擇 編碼格式時 該頁面所用的編碼。即使網頁已經宣告過編碼格式 由此造成某些含有中文utf 8編碼的頁面產生空白輸出。由於utf 8為3個位元組表示...

字元編碼之UTF 8

博學,切問,近思 詹子知 http blog.csdn.net zhiqiangzhan utf 8 8 位元 universal character set unicode transformation format 是一種針對unicode的可變長度字元編碼。utf 8 是一種傳輸編碼,他和定長...

判斷檔案是否是utf 8

函式名 isutf8file 日期 2011 12 01 功能 判斷檔案是否是utf 8 輸入引數 tchar strfile 返回值 int 2 表示檔案錯誤 1 表示開啟檔案錯誤 1 是utf 8 有bom 2 是utf 8 無bom 0 表示不是utf 8 int isutf8file tch...