一直用php開發,在php開發用字元編碼轉換很簡單只要用iconv函式就可以實現,最近的專案要把vc的資料提交給php處理,在返回給vc結果, 問題來了,vc專案的編碼是gb2312,而php程式是utf-8編碼,導致資料亂碼。 看到亂碼第一感覺就是編碼問題了。 vc中有像iconv這樣的函式嗎?查msdn沒有。恩,看來還是php好用啊。不虧是我喜歡的語言。 vc中怎麼實現呢?要utf8->gb2312谷歌到的結果是,要先把utf8轉換
為unicode編碼,在把unicode轉換成gb2312。也就是utf8 ->unicode ->gb2312這個過程。 如果要從gb2312->utf8呢,就類似上面那樣了,也就是gb2312->unicode ->utf-8這個過程。至於為什麼要先轉換成unicode編碼呢?我自己也還不清楚。可能和什麼是 utf8,gb2312編碼有關吧,這裡有變文章介紹這些編碼。
好了看看vc中是怎麼實現utf8到unicode編碼的。可以用這個函式multibytetowidechar() 從unicode到gb2312是用widechartomultibyte()這個函式。 我把它寫成了乙個iconv()函式引數和php的一樣下面是**。
code
1/**//**
2字元編碼轉換函式
3**/
4cstring iconv(cstring
&str,
intin_charset,
intout_charset)
5
iconv 轉換字元編碼,相容VC轉換
ifndef char convert h define char convert h ifdef os windows include targetver.h ifndef win32 lean and mean define win32 lean and mean 從 windows 標頭檔案中...
VC編碼轉換
2008 11 4 使用multibytetowidechar和widechartomultibyte寫的4個ansi unicode utf 8 相互轉換的函式。2008 11 5 使用c語言標準庫mbstowcs和wcstombs寫的w2m和m2w兩個函式,分別對應ansi unicode 相互...
VC編碼轉換
有很多人在為vc中的編碼轉換犯愁,有的自己根據編碼規範去寫,經過我查閱資料,根本不需要這麼做,我總結了一下實現方式。codepages列舉的定義 參看了.net中的定義 enum codepages 幾個轉換函式一看就懂,主要呼叫widechartomultibyte和multibytetowide...