Reprinted: http://blog.csdn.net/segen_jaa/article/details/6447874
// Convert utf8 to GBK format
Void convertutf8togbk (cstring & strutf8)
{
Int Len = multibytetowidechar (cp_utf8, 0, (lpctstr) strutf8,-1, null, 0 );
Wchar_t * wszgbk = new wchar_t [Len];
Memset (wszgbk, 0, Len );
Multibytetowidechar (cp_utf8, 0, (lpctstr) strutf8,-1, wszgbk, Len );
Len = widechartomultibyte (cp_acp, 0, wszgbk,-1, null, 0, null, null );
Char * szgbk = new char [Len + 1];
Memset (szgbk, 0, Len + 1 );
Widechartomultibyte (cp_acp, 0, wszgbk,-1, szgbk, Len, null, null );
Strutf8 = szgbk;
Delete [] szgbk;
Delete [] wszgbk;
}
// Convert GBK to utf8 format
Void convertgbktoutf8 (cstring & strgbk)
{
Int Len = multibytetowidechar (cp_acp, 0, (lpctstr) strgbk,-1, null, 0 );
Wchar_t * wszutf8 = new wchar_t [Len];
Memset (wszutf8, 0, Len );
Multibytetowidechar (cp_acp, 0, (lpctstr) strgbk,-1, wszutf8, Len );
Len = widechartomultibyte (cp_utf8, 0, wszutf8,-1, null, 0, null, null );
Char * szutf8 = new char [Len + 1];
Memset (szutf8, 0, Len + 1 );
Widechartomultibyte (cp_utf8, 0, wszutf8,-1, szutf8, Len, null, null );
Strgbk = szutf8;
Delete [] szutf8;
Delete [] wszutf8;
}
Void convertutf8togbk (cstring & strutf8)
{
Int Len = multibytetowidechar (cp_utf8, 0, (lpctstr) strutf8,-1, null, 0 );
Wchar_t * wszgbk = new wchar_t [Len];
Memset (wszgbk, 0, Len );
Multibytetowidechar (cp_utf8, 0, (lpctstr) strutf8,-1, wszgbk, Len );
Len = widechartomultibyte (cp_acp, 0, wszgbk,-1, null, 0, null, null );
Char * szgbk = new char [Len + 1];
Memset (szgbk, 0, Len + 1 );
Widechartomultibyte (cp_acp, 0, wszgbk,-1, szgbk, Len, null, null );
Strutf8 = szgbk;
Delete [] szgbk;
Delete [] wszgbk;
}
// Convert GBK to utf8 format
Void convertgbktoutf8 (cstring & strgbk)
{
Int Len = multibytetowidechar (cp_acp, 0, (lpctstr) strgbk,-1, null, 0 );
Wchar_t * wszutf8 = new wchar_t [Len];
Memset (wszutf8, 0, Len );
Multibytetowidechar (cp_acp, 0, (lpctstr) strgbk,-1, wszutf8, Len );
Len = widechartomultibyte (cp_utf8, 0, wszutf8,-1, null, 0, null, null );
Char * szutf8 = new char [Len + 1];
Memset (szutf8, 0, Len + 1 );
Widechartomultibyte (cp_utf8, 0, wszutf8,-1, szutf8, Len, null, null );
Strgbk = szutf8;
Delete [] szutf8;
Delete [] wszutf8;
}