UTF-8到acsii的轉換(讓自己的C++程序支持多語言)

我的思路是這樣的:在配置文件(基本上使用XML格式)中採用UTF-8編碼,這樣世界上的任何文字就都可以顯示了。但是如果直接將配置內容讀出並顯示,在你的C++程序裏面肯定是亂碼,那麼怎麼解決呢?步驟如下(直接看代碼吧)

char szUTF8 [] = {0xE4,0XBB,0XB7,0XE5,0X80,0XBC};//是漢語的價值兩個字

int nLen = MultiByteToWideChar( CP_UTF8, 0, szUTF8, -1, NULL, NULL );//得到UTF8編碼的字符串長度,是2

LPWSTR lpwsz = new WCHAR[nLen];

MultiByteToWideChar( CP_UTF8, 0, szUTF8, -1, lpwsz, nLen );//轉換的結果是UCS2格式的價值兩個字

int nLen1 = WideCharToMultiByte( CP_ACP, 0, lpwsz, nLen, NULL, NULL, NULL, NULL );

LPSTR lpsz = new CHAR[nLen1];

WideCharToMultiByte( CP_ACP, 0, lpwsz, nLen, lpsz, nLen1, NULL, NULL );//轉換完畢,得到了在我的機器上的"價值"兩個字的二進制編碼0xbc 0xdb 0xd6 0xb5

delete [] lpwsz; delete [] lpsz;

隨後,我測試了俄語、西班牙語、日語、繁體中文等都能夠正常顯示。

但是好像有一些怪字符不能顯示,不知道這些字符是什麼語言的字符集。
通過對以上知識的瞭解,應該很容易在C++程序中加入多語言支持了吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章