我在使用VC6進行程序開發的時候,遇到這個問題:
比如捷克語言,俄語等等,在顯示的時候總是顯示亂碼(????),在編輯框中顯示,或者通過ADO導入都是顯示亂碼,這個問題困了我好久,最後比對開發環境,查出原因,是使用字符集的問題。
vc6開發環境默認使用的MBCS字符集(Multiple Byte Character Set),更改爲UNICODE字符集就可以解決這個問題。設置方法如下:
1、【project】-【Settings】,在【C/C++】頁面,選擇"Category"後的【General】,然後在頁面的中下部的"Preprocessor definitions:"更改_MBCS爲_UNICODE,UNICODE
2、【project】-【Settings】,在【Link】頁面,選擇"Category"後的【Output】,然後在頁面的中上部的"Entry_point symbol:"下面的編輯框中輸入: wWinMainCRTStartup
原因如下:
Output:Base Address可以改變程序默認的基地址(EXE文件默認爲0x400000,DLL默認爲0x10000000),
操作系統裝載一個程序時總是試着先從這個基地址開始。Entry-Point Symbol可以指定程序的入口地址,一般爲一個函數名(且必須採用__stdcall調用約定)。
一般Win32的程序,EXE的入口爲WinMain,DLL的入口爲DllEntryPoint;
最好讓連接器自動設置程序的入口點。默認情況下,通過一個C的運行時庫函數來實現:
控制檯程序採用mainCRTStartup (或wmainCRTStartup)去調用程序的main (或wmain)函數; Windows程序採用WinMainCRTStartup (或 wWinMainCRTStartup)調用程序的WinMain (或 wWinMain,必須採用__stdcall調用約定);
DLL採用_DllMainCRTStartup調用DllMain函數(必須採用__stdcall調用約定)。
Stack allocations,用以設置程序使用的堆棧大小(請使用十進制),默認爲1兆字節。Version Information告訴連接器在EXE或DLL文件的開始部分放上版本號。