win32中GBK UTF8的互轉

2021-07-12 00:26:40 字數 1614 閱讀 7522

#include "stdafx.h"

#include

#include

//gbk編碼轉換到utf8編碼

int gbktoutf8(unsigned char * lpgbkstr,unsigned char * lputf8str,int nutf8strlen)

if(nutf8strlen < nretlen)  //如果輸出緩衝區長度不夠則退出

nretlen = ::widechartomultibyte(cp_utf8,0,lpunicodestr,-1,(char *)lputf8str,nutf8strlen,null,null);  //轉換到utf8編碼

if(lpunicodestr)

delete lpunicodestr;

return nretlen;

}// utf8編碼轉換到gbk編碼

int utf8togbk(unsigned char * lputf8str,unsigned char * lpgbkstr,int ngbkstrlen)

if(ngbkstrlen < nretlen)  //如果輸出緩衝區長度不夠則退出

nretlen = ::widechartomultibyte(cp_acp,0,lpunicodestr,-1,(char *)lpgbkstr,nretlen,null,null);  //轉換到gbk編碼

if(lpunicodestr)

delete lpunicodestr;

return nretlen;

}int _tmain(int argc, _tchar* argv)

else

fp = fopen("c:\\gbk2utf8.txt","wb");  //儲存到文字檔案

fwrite(lputf8str,nretlen,1,fp);

fclose(fp);

getchar();  //先去開啟那個文字檔案看看,單擊記事本的「檔案」-「另存為」選單,在對話方塊中看到編碼框變為了「utf-8」說明轉換成功了

nretlen = utf8togbk((unsigned char *)lputf8str,null,null);  //再轉回來

printf("轉換後的字串需要的空間長度為:%d ",nretlen);

lpgbkstr = new char[nretlen + 1];

nretlen = utf8togbk((unsigned char *)lputf8str,(unsigned char *)lpgbkstr,nretlen);

if(nretlen)

else

fp = fopen("c:\\utf82gbk.txt","wb");  //儲存到文字檔案

fwrite(lpgbkstr,nretlen,1,fp);

fclose(fp);

getchar();  //再去開啟文字檔案看看,發現編碼框又變為了「ansi」說明轉換成功了

ret0:

if(lpgbkstr)

delete lpgbkstr;

if(lputf8str)

delete lputf8str;

return 0;

}

win32中GBK UTF8的互轉

include stdafx.h include include gbk編碼轉換到utf8編碼 int gbktoutf8 unsigned char lpgbkstr,unsigned char lputf8str,int nutf8strlen if nutf8strlen nretlen 如果...

WPF與Win32互操作

一 wpf如何使用hwnd 當您建立wpf window時,wpf會建立頂級hwnd,並使用hwndsource將window及其wpf內容放入hwnd中。應用程式中其餘的wpf內容共享此單個hwnd。不過,選單 組合框下拉列表和其他彈出視窗例外。這些元素建立它們自己的頂級視窗,這正是 wpf 選單...

Win32中的listbox學習

列表框樣式 visual studio 2013 其他版本 當列表框不包含足夠的項滾動時,lbs disablenoscroll列表框顯示乙個禁用的垂直滾動條。若無此樣式,當列表框不包含足夠的項時,滾動條將隱藏。使用 shift 鍵和滑鼠或特定組合鍵lbs extendedsel,使用者可以選擇多個...