2 回答

TA貢獻(xiàn)1887條經(jīng)驗 獲得超5個贊
如果是Windows系統(tǒng),可以用API函數(shù)
int GetTextCharset(HDC)
返回值可能是
ANSI_CHARSET
CHINESEBIG5_CHARSET
GB2312_CHARSET
等預(yù)定義的符號值。到底可能返回哪些值,與Windows的版本以及所使用的開發(fā)環(huán)境有關(guān)。
比如,要查詢Windows桌面所使用的字符集,可以這樣調(diào)用:
switch ( GetTextCharset(GetWindowDC(GetDesktopWindow())))
{
case GB2312_CHARSET: printf("桌面正在使用GB2312字符集\n");break;
case CHINESEBIG5_CHARSET: printf("桌面正在使用BIG5字符集\n");break;
}

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊
1)文庫一下“gb2312_gb18030_字符集”,就能下載到相應(yīng)的文檔,得到GB2312字符集的編碼列表。
2)把這個列表存成txt文件,在程序啟動的時候,讀入內(nèi)存數(shù)組中,排好序。
3)當(dāng)需要檢測一個用戶輸入的字符串,是否是GB2312標(biāo)準(zhǔn)字符集,則將該字符串的每2個字節(jié)(非Ascii的,即高字節(jié)不位0的),都拿去在這個GB2312數(shù)組中進(jìn)行二分查找。如果都能找到,則說明用戶輸入字符串是GB2312的,如果有找不到的,則說明這個字符轉(zhuǎn)不是GB2312的。
添加回答
舉報