1. 程式人生 > >多位元組字符集改為Unicode字符集遇到的問題及解決方法

多位元組字符集改為Unicode字符集遇到的問題及解決方法

在Character Set這裡通常有兩種選擇:一是Use Unicode Character Set ,另一種是Use Multi-Byte Character Set,一般情況下,比較偏向Use Multi-Byte Character Set ,但是當使用中文對話方塊的時候,Use Multi-Byte Character Set往往會出現“???”的情況,這時候該怎麼處理呢?

我的第一想法就是Use Unicode  Character Set ,但是因為Unicode和ANSI的原因,在Use Multi-Byte Character Set時正確的程式碼,在Use Unicode Character Set時會出現一些錯誤,這裡,經過和論壇裡一些朋友的討論,我整理出了以下內容,希望能夠幫助到有需要的朋友!!

遇到的問題及相應的解決方法大致可以分為兩類:

1、程式碼中原來用"……"的地方,改為_T("……")

如:"*.bmp" 改為 _T("*.bmp")

這裡注意不要有遺漏!!!

2、Error:no suitable conversion function from "CString" to "const char *" exists

如:CString filePath;

src=cvLoadImage(filePath);

改為

src = cvLoadImage(CW2A((LPCTSTR)filePath));

我的程式碼錯誤及改正:

1、cannot convert parameter XX from 'const char [1]' to 'LPCTSTR'

解決方法:parameter XX 程式碼中原來用"……"的地方,改為用_T("……")

2、cannot convert from 'char [11]' to 'LPCWS

解決方法:資料型別改為CString,去掉[ ] , 原來用"……"的地方,改為用_T("……") 

如:char title[]= {"Open Image"};改為CString title= _T("Open Image");

3、cannot convert parameter 1 from 'CString' to 'const char *'

解決方法:src = cvLoadImage(filePath); 改為 

src = cvLoadImage(CW2A((LPCTSTR)filePath));