项目中,为了新老兼容,UNICODE ANSI UTF8满天飞,整理几个编码函数 namespace NLS_COM { wstring AStringToWString(const string& szSrc, UINT nCodePage) { wstring lstrResult; if (!szSrc.empty()) { int length = MultiByteToWideChar(nCodePage, 0, szSrc.c_str(), -1, NULL, 0); wchar_t* lpwszTemp = new wchar_t[length + 1]; memset(lpwszTemp, 0, (length + 1) * sizeof(wchar_t)); MultiByteToWideChar(nCodePage, 0, szSrc.c_str(), -1, lpwszTemp, length); lstrResult = lpwszTemp; delete[] lpwszTemp; } return lstrResult; } string WStringToAString(const wstring& szSrc, UINT nCodePage) { string lstrResult; if (!szSrc.empty()) { int length = WideCharToMultiByte(nCodePage, 0, szSrc.c_str(), -1, NULL, 0, NULL, NULL); char* lpszTemp = new char[length + 1]; memset(lpszTemp, 0, length + 1); WideCharToMultiByte(nCodePage, 0, szSrc.c_str(), -1, lpszTemp, length, NULL, NULL); lstrResult = lpszTemp; delete[] lpszTemp; } return lstrResult; } string TStringToAString(const tstring& szSrc, UINT nCodePage) { string strResult; #ifdef _UNICODE strResult = WStringToAString(szSrc, nCodePage); #else strResult = szSrc; #endif return strResult; } tstring AStringToTString(const string& szSrc, UINT nCodePage) { tstring strResult; #ifdef _UNICODE strResult = AStringToWString(szSrc, nCodePage); #else strResult = szSrc; #endif return strResult; } }