中文XP分為繁體XP(BIG5)和簡體XP(GB2312),這裡簡單的說一下我們常見的編碼轉換,GB2312,BIG5,UTF8,Unicode.這四種編碼的是怎麼轉換的。
以下code在VC6上調試過,應該沒有問題。因為有兩個函數的參數不好設置MultiByteToWideChar和WideCharToMultiByte,所以自己就在VC6上調試,把自己的結論寫下來。(這裡隻是簡單的code中間有一些申請空間,釋放空間,都沒有寫,但是總的原則是,有這兩個函數MultiByteToWideChar和WideCharToMultiByte先計算要幾個空閒,再申請,使用,釋放)
這個參數設置說明:
(一) GB2312,BIG5到Unicode
DWORD num = MultiByteToWideChar(CP_ACP,0,cword,-1,NULL,0);
//計算這個GB2312, BIG5實際有幾個字組成
MultiByteToWideChar(CP_ACP,0, cword, -1, wword, num);
//GB2312 BIG5轉變為Unicode
(二) UTF-8到Unicode
DWORD num = MultiByteToWideChar(CP_UTF8,0,buffer,-1,NULL,0);
//計算這個UTF-8實際有幾個字組成
MultiByteToWideChar(CP_ACP ,0, buffer, -1, wword, num);
//UTF8轉變為Unicode
(三) UTF-8到GB2312,BIG5
方法一:UTF-8到Unicode 再從Unicode到GB2312,BIG5
DWORD num = MultiByteToWideChar(CP_UTF8,0,buffer,-1,NULL,0);
//計算這個UTF-8實際有幾個字組成
MultiByteToWideChar(CP_ACP ,0, buffer, -1, wword, num);
//UTF8轉變為Unicode
DWORD num = WideCharToMultiByte(CP_ACP,0,wword,-1,NULL,0,NULL,0);
//計算這個UNICODE實際有幾個GB2312 BIG5字組成
WideCharToMultiByte(CP_ACP,0, wword, -1, cword, num,NULL,0);
//Unicode轉變為GB2312 BIG5
(四) Unicode到GB2312,BIG5
DWORD num = WideCharToMultiByte(CP_ACP,0,wword,-1,NULL,0,NULL,0);
//計算這個UNICODE實際有幾個GB2312 BIG5字組成
WideCharToMultiByte(CP_ACP,0, wword, -1, cword, num,NULL,0);
//Unicode轉變為GB2312 BIG5
(五) Unicode到UTF-8
DWORDnum=WideCharToMultiByte(CP_UTF8,0,wword,-1,NULL,0,NULL,NULL);
//計算這個UNICODE實際有幾個UTF-8字組成
WideCharToMultiByte(CP_ACP,0, wword, -1, cword, num,NULL,NULL);
//Unicode轉變為UTF-8
(六) GB2312 BIG5到UTF-8
方法一:GB2312,BIG5到Unicode 再從Unicode到UTF-8
DWORD num = MultiByteToWideChar(CP_ACP,0,cword,-1,NULL,0);
//計算這個GB2312, BIG5實際有幾個字組成
MultiByteToWideChar(CP_ACP,0, cword, -1, wword, num);
//GB2312 BIG5轉變為Unicode
DWORDnum=WideCharToMultiByte(CP_UTF8,0,wword,-1,NULL,0,NULL,NULL);
//計算這個UNICODE實際有幾個UTF-8字組成
WideCharToMultiByte(CP_ACP,0, wword, -1, cword, num,NULL,NULL);
//Unicode轉變為UTF-8
轉自 波周的BLOG
2009年10月13日 星期二
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言