本來想用檔案儲存幾個字串,其中還有漢字的字串。因為是用mfc做的,所以我自然想到用mfc提供的cfile類來檔案io。但是cfile不能一條一條記錄(用回車符分隔的字串)的讀取。於是我改用cstdiofile類,可是cstdiofile::writestring和readstring進行檔案io時對中文的支援不好,要麼是不能寫入中文到檔案中,用麼是不能從檔案中讀入中文。文字模式和二進位制模式我都試了了。自己建立unicode編碼的文字檔案也不能正常讀取。搞到半夜還是沒搞定。我怒了。於是改用c++的標準檔案io流訪問ansi檔案。再將ansi字串轉換到unicode字串。問題終於解決了。
將ansi轉換到unicode
(1)通過l這個巨集來實現,例如: clsidfromprogid( l"mapi.folder",&clsid);
(2)通過multibytetowidechar函式實現轉換,例如:
char *szprogid = "mapi.folder";
wchar szwideprogid[128];
clsid clsid;
long llen = multibytetowidechar(cp_acp,0,szprogid,strlen(szprogid),szwideprogid,sizeof(szwideprogid));
szwideprogid[llen] = '\0';
(3)通過a2w巨集來實現,例如:
uses_conversion;
clsidfromprogid( a2w(szprogid),&clsid);
將unicode轉換到ansi
(1)使用widechartomultibyte,例如:
// 假設已經有了乙個unicode 串 wszsomestring...
char szansistring [max_path];
widechartomultibyte ( cp_acp, wc_compositecheck, wszsomestring, -1, szansistring, sizeof(szansistring), null, null );
(2)使用w2a巨集來實現,例如:
uses_conversion;
ptemp=w2a(wszsomestring);
輸出中文字元
輸出中文字元 要想在圖形中輸出中文字元,需要對輸出的中文字元進行編碼。使用iconv 函式,可以把一種編碼的字元,轉換為其他編碼的字元。下面介紹在圖形中輸出中文字元的方法,建立乙個新圖形 image imagecreate 400,200 設定背景,分配顏色 bgcolor imagecoloral...
MySQL不能插入中文字元及中文字元亂碼問題
mysql的預設編碼是latin1,不支援中文,要支援中午需要把資料庫的預設編碼修改為gbk或者utf8。在安裝後mysql之後,它的配置檔案不是很給力,不知道你們的是不是,反正我的是!開始插入中文字元的時候出現如下錯誤 error 1366 hy000 incorrect string value...
MySQL不能插入中文字元及中文字元亂碼問題
mysql的預設編碼是latin1,不支援中文,要支援中午需要把資料庫的預設編碼修改為gbk或者utf8。在安裝後mysql之後,它的配置檔案不是很給力,不知道你們的是不是,反正我的是!開始插入中文字元的時候出現如下錯誤 error 1366 hy000 incorrect string value...