赞
踩
1:UNICODE和GBK互转
- wstring MBytesToWString(const char *lpcszString)
- {
- int len = strlen(lpcszString);
- int unicodeLen = ::MultiByteToWideChar(CP_ACP, 0, lpcszString, - 1, NULL, 0);
- wchar_t *pUnicode = new wchar_t[unicodeLen + 1];
- memset(pUnicode, 0, (unicodeLen + 1) *sizeof(wchar_t));
- ::MultiByteToWideChar(CP_ACP, 0, lpcszString, - 1, (LPWSTR)pUnicode, unicodeLen);
- wstring wString = (wchar_t *)pUnicode;
- delete [] pUnicode;
- return wString;
- }
-
- string WStringToMBytes(const wchar_t *lpwcszWString)
- {
- char *pElementText;
- int iTextLen;
- // wide char to multi char
- iTextLen = ::WideCharToMultiByte(CP_ACP, 0, lpwcszWString, - 1, NULL, 0, NULL, NULL);
- pElementText = new char[iTextLen + 1];
- memset((void *)pElementText, 0, (iTextLen + 1) *sizeof(char));
- ::WideCharToMultiByte(CP_ACP, 0, lpwcszWString, 0, pElementText, iTextLen, NULL, NULL);
- string strReturn(pElementText);
- delete [] pElementText;
- return strReturn;
- }
2:GBK和UTF-8互转
- string GBKToUTF8(const string &strGBK)
- {
- string strOutUTF8 = "";
- WCHAR *str1;
- int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), - 1, NULL, 0);
- str1 = new WCHAR[n];
- MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), - 1, str1, n);
- n = WideCharToMultiByte(CP_UTF8, 0, str1, - 1, NULL, 0, NULL, NULL);
- char *str2 = new char[n];
- WideCharToMultiByte(CP_UTF8, 0, str1, - 1, str2, n, NULL, NULL);
- strOutUTF8 = str2;
- delete [] str1;
- str1 = NULL;
- delete [] str2;
- str2 = NULL;
- return strOutUTF8;
- }
-
- string UTF8ToGBK(const string &strUTF8)
- {
- int len = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), - 1, NULL, 0);
- WCHAR *wszGBK = new WCHAR[len + 1];
- memset(wszGBK, 0, (len+1)*sizeof(WCHAR));
- MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)strUTF8.c_str(), - 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;
- string strTemp(szGBK);
- delete [] szGBK;
- szGBK = NULL;
- delete [] wszGBK;
- wszGBK = NULL;
- return strTemp;
- }
3:UNICODE和UTF-8互转
- wstring UTF8ToWString(const char *lpcszString)
- {
- int len = strlen(lpcszString);
- int unicodeLen = ::MultiByteToWideChar(CP_UTF8, 0, lpcszString, - 1, NULL, 0);
- wchar_t *pUnicode;
- pUnicode = new wchar_t[unicodeLen + 1];
- memset((void *)pUnicode, 0, (unicodeLen + 1) *sizeof(wchar_t));
- ::MultiByteToWideChar(CP_UTF8, 0, lpcszString, - 1, (LPWSTR)pUnicode, unicodeLen);
- wstring wstrReturn(pUnicode);
- delete [] pUnicode;
- return wstrReturn;
- }
-
- string WStringToUTF8(const wchar_t *lpwcszWString)
- {
- char *pElementText;
- int iTextLen = ::WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)lpwcszWString, - 1, NULL, 0, NULL, NULL);
- pElementText = new char[iTextLen + 1];
- memset((void *)pElementText, 0, (iTextLen + 1) *sizeof(char));
- ::WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)lpwcszWString, - 1, pElementText, iTextLen, NULL, NULL);
- string strReturn(pElementText);
- delete [] pElementText;
- return strReturn;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。