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...