big5轉utf5的程式設計

sha
大家好,我是使用VC6.0++,我想將一個big5碼的字串轉成utf8,請問這段程式如何設計,懇請各位高手不吝賜教!感謝!



o小高o
有查到這個,或許有幫助?

[code]char *szData="中文",*sendbuf_utf8=NULL;
wchar_t *sendbuf_Unicode=NULL;

//big5->unicode
int nDataLen=MultiByteToWideChar (CP_ACP, 0, szData, -1, NULL,0) ;
sendbuf_Unicode=new wchar_t[nDataLen+1];
MultiByteToWideChar(CP_ACP, 0, szData, -1, sendbuf_Unicode, nDataLen);

//unicode->UTF-8
nDataLen=WideCharToMultiByte (CP_UTF8, 0, sendbuf_Unicode, -1, NULL,0 ,NULL, NULL);
sendbuf_utf8=new char[nDataLen+1];
WideCharToMultiByte (CP_UTF8, 0, sendbuf_Unicode, -1, sendbuf_utf8,nDataLen, NULL, NULL);
//到這邊,sendbuf_utf8內的資料即是"中文"兩字的utf-8編碼了~

//delete new buffer
delete []sendbuf_utf8;sendbuf_utf8=NULL;
delete []sendbuf_Unicode;sendbuf_Unicode=NULL;[/code]

http://yao1982prog.blogspot.com/2011/08/vcbig5unicodeutf-8.html
sha
謝謝小高的回覆,我研究看看,若有問題再向你請教,非常感謝你的幫忙!
kay
我自己都是這樣用的,試試看吧

void Big5ToUnicode(const char *szBig5, wchar_t *szUni) //把 big5 轉成 Unicode
{
DWORD dw = MultiByteToWideChar(950, 0, szBig5, -1, NULL, 0);
MultiByteToWideChar(950, 0, szBig5, -1, szUni, dw);
}
void UnicodeToUTF8(const wchar_t *szUni, char *szUtf) //把 Unicode 轉成 UTF8
{
int textlen = WideCharToMultiByte(CP_UTF8, 0, szUni, -1, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_UTF8, 0, szUni, -1, szUtf, textlen, NULL, NULL);
}
回到頂部