C++实现UTF-8编码和Unicode编码互转

来源:互联网 发布:金融证券软件 编辑:程序博客网 时间:2024/05/18 03:16

转自:http://www.itstrike.cn/Question/5e977ab5-e035-4595-a35b-91aae63fa394.html

1.UTF-8转Unicode

wstring UTF8ToUnicode( const string& str ){ int  len = 0; len = str.length(); int  unicodeLen = ::MultiByteToWideChar( CP_UTF8,            0,            str.c_str(),            -1,            NULL,            0 );  wchar_t *  pUnicode;  pUnicode = new  wchar_t[unicodeLen+1];  memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));  ::MultiByteToWideChar( CP_UTF8,         0,         str.c_str(),         -1,         (LPWSTR)pUnicode,         unicodeLen );  wstring  rt;  rt = ( wchar_t* )pUnicode; delete  pUnicode; return  rt; }

2.Unicode转UTF-8

string UnicodeToUTF8( const wstring& str ){ char*     pElementText; int    iTextLen; // wide char to multi char iTextLen = WideCharToMultiByte( CP_UTF8,         0,         str.c_str(),         -1,         NULL,         0,         NULL,         NULL ); pElementText = new char[iTextLen + 1]; memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) ); ::WideCharToMultiByte( CP_UTF8,         0,         str.c_str(),         -1,         pElementText,         iTextLen,         NULL,         NULL ); string strText; strText = pElementText; delete[] pElementText; return strText;}
0 0
原创粉丝点击