UFT-8,多字节和UNICODE之间的转换

来源:互联网 发布:网络教学与传统教学 编辑:程序博客网 时间:2024/04/30 08:19

多字节转换为UTF-8:

void ConvertGBKToUtf8( CString& strGBK ){    int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0);    WCHAR * wszUtf8 = new WCHAR[len+1];    memset(wszUtf8, 0, len * 2 + 2);    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;}

UTF-8转换为多字节:

void ConvertUtf8ToGBK( CString& strUtf8 ){    int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);    WCHAR * wszGBK = new WCHAR[len+1];    memset(wszGBK, 0, len * 2 + 2);    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;}


原创粉丝点击