網上找了一篇關於unicode程式設計設定方面的文件,感覺不錯,收藏了
1。unicod程式設計 (新增uafxcw.lib檔案)乙個是debug版本的庫,乙個是release版本的庫uafxcw.lib
(1)在project settings的link中加入uafxcw.lib
(2)#pragma comment(lib,"uafxcw.lib ")
否則link : fatal error lnk1104: cannot open file "uafxcw.lib "
2在vc6。0設定
vc++ 6.0支援unicode程式設計,但預設的是ansi,所以開發人員只需要稍微改變一下編寫**的習慣便可以輕鬆編寫支援unicode的應用程式。
使用vc++ 6.0進行unicode程式設計主要做以下幾項工作:
1、為工程新增unicode和_unicode預處理選項。
(1)具體步驟:開啟[工程]->[設定…]對話方塊,如圖1所示,在c/c++標籤對話方塊的「預處理程式定義」中去除_mbcs,加上_unicode,unicode。(注意中間用逗號隔開)改動後如圖2:
圖一圖二
在沒有定義unicode和_unicode時,所有函式和型別都預設使用ansi的版本;在定義了unicode和_unicode之後,所有的mfc類和windows api都變成了寬位元組版本了。
2、設定程式入口點
因為mfc應用程式有針對unicode專用的程式入口點,我們要設定entry point。否則就會出現連線錯誤。
設定entry point的方法是:開啟[工程]->[設定…]對話方塊,在link頁的output類別的entry point裡填上wwinmaincrtstartup。
圖三3、使用ansi/unicode通用資料型別
微軟提供了一些ansi和unicode相容的通用資料型別,我們最常用的資料型別有_t ,tchar,lptstr,lpctstr。
順便說一下,lpctstr和const tchar*是完全等同的。其中l表示long指標,這是為了相容windows 3.1等16位作業系統遺留下來的,在win32 中以及其它的32位作業系統中,long指標和near指標及far修飾符都是為了相容的作用,沒有實際意義。p(pointer)表示這是乙個指標;c(const)表示是乙個常量;t(_t巨集)表示相容ansi和unicode,str(string)表示這個變數是乙個字串。綜上可以看出,lpctstr表示乙個指向常固定位址的可以根據一些巨集定義改變語義的字串。比如:
使用函式中的引數最好也要有變化,比如:
messagebox(_t(「你好」));其實,在上面的語句中,即使您不加_t巨集,messagebox函式也會自動把「你好」字串進行強制轉換。但我還是推薦您使用_t巨集,以表示您有unicode編碼意識。
4、修改字串運算問題
一些字串操作函式需要獲取字串的字元數(sizeof(szbuffer)/sizeof(tchar)),而另一些函式可能需要獲取字串的位元組數sizeof(szbuffer)。您應該注意該問題並仔細分析字串操作函式,以確定能夠得到正確的結果。
ansi操作函式以str開頭,如strcpy(),strcat(),strlen();
unicode操作函式以wcs開頭,如wcscpy,wcscpy(),wcslen();
ansi/unicode操作函式以_tcs開頭 _tcscpy(c執行期庫);
ansi/unicode操作函式以lstr開頭 lstrcpy(windows函式);
考慮ansi和unicode的相容,我們需要使用以_tcs開頭或lstr開頭的通用字串操作函式。
六、舉個unicode程式設計的例子
第一步:
開啟vc++6.0,新建基於對話方塊的工程unicode,主對話方塊idd_unicode_dialog中加入乙個按鈕控制項,雙擊該控制項並新增該控制項的響應函式:
void cunicodedlg::onbutton1()新增靜態文字框idc_disp,使用classwizard給該控制項新增cstring型別變數m_disp。使用預設ansi編碼環境編譯該工程,生成unicode.exe。
第二步:
開啟「控制面板」,單擊「日期、時間、語言和區域設定」選項,在「日期、時間、語言和區域設定」視窗中繼續單擊「區域和語言選項」選項,彈出「區域和語言選項」對話方塊。在該對話方塊中,單擊「高階」標籤,將「非unicode的程式的語言」選項改為「日語」,單擊「應用」按鈕,如圖四:
圖四彈出的對話方塊單擊「是」,重新啟動計算機使設定生效。
執行unicode.exe程式並單擊「button1」按鈕,看,靜態文字框出現了亂碼。
第三步:
改為unicode編碼環境編譯該工程,生成unicode.exe。再次執行unicode.exe程式並單擊「button1」按鈕。
Unicode程式設計
1.windows 定義的unicode 資料型別有哪些?資料型別 說明 wchar unicode字元 源自系統巨集定義typedef wchar t wchar pwstr 指向unicode字串的指標 pcwstr 指向乙個恆定的unicode字串的指標 對應的ansi資料型別為char,lp...
UNICODE 程式設計入門(3)
下面的這個例子使用 win32 api 函式和通用資料型別設定 c 盤的卷標。設定 c 盤的卷標 drvsvl.cpp include include void main 通過使用 tchar 資料型別,將這段 最上面的字元陣列宣告為兩個位元組的字元。text 巨集再次被用於字串常量 void ma...
跨平台UNICODE程式設計總結
這段時間在架構整個伺服器,雖然前段時間受到了5.12汶川8.0級大 的影響 深切悼念在此次大 中遇難的同胞們 但是,我的工作還是在不斷地向前推進著。為了讓我們的伺服器能夠跨平台 主要是windows與linux 且能支援世界上的各種語言,我寫了乙個跨平台的且支援unicode的庫。其實,我在之前也有...