utf8 ansii unicode三种格式的相互转换

来源:互联网 发布:开淘宝店一个月赚3万 编辑:程序博客网 时间:2024/05/06 21:29

直接贴源码:

具体源码函数文件见此链接:http://download.csdn.net/detail/lingxiu0613/5290721


BOOL AnsiToUcs(const CStringA &strAnsi, CStringW &strUcs){// Ansi 转换为 Ucsint iRet = ::MultiByteToWideChar(CP_ACP, 0, strAnsi, -1, NULL, 0);if (iRet == 0)return FALSE;WCHAR *szBuff = new WCHAR[iRet];iRet = ::MultiByteToWideChar(CP_ACP, 0, strAnsi, -1, szBuff, iRet);if (iRet == 0)return FALSE;strUcs = szBuff;delete [] szBuff;return TRUE;}BOOL UcsToAnsi(const CStringW &strUcs, CStringA &strAnsi){// Ucs 转换为 Ansiint iRet = ::WideCharToMultiByte(CP_ACP, 0, strUcs, -1, NULL, 0, NULL, NULL);if (iRet == 0)return FALSE;CHAR *szBuff = new CHAR[iRet];iRet = ::WideCharToMultiByte(CP_ACP, 0, strUcs, -1, szBuff, iRet, NULL, NULL);if (iRet == 0)return FALSE;strAnsi = szBuff;delete [] szBuff;return TRUE;}BOOL UcsToUtf8(const CStringW &strUcs, CStringA &strUtf8){// Ucs 转换为 Utf8int iRet = ::WideCharToMultiByte(CP_UTF8, 0, strUcs, -1, NULL, 0, NULL, NULL);if (iRet == 0)return FALSE;CHAR *szBuf = new CHAR[iRet];iRet = ::WideCharToMultiByte(CP_UTF8, 0, strUcs, -1, szBuf, iRet, NULL, NULL);if (iRet == 0)return FALSE;strUtf8 = szBuf;delete [] szBuf;return TRUE;}BOOL Utf8ToUcs(const CStringA &strUtf8, CStringW &strUcs){// Utf8 转换为 Ucs// Utf8 转换为 Unicodeint iRet = ::MultiByteToWideChar(CP_UTF8, 0, strUtf8, -1, NULL, 0);if (iRet == 0)return FALSE;WCHAR *szBuf = new WCHAR[iRet];iRet = ::MultiByteToWideChar(CP_UTF8, 0, strUtf8, -1, szBuf, iRet);if (iRet == 0)return FALSE;strUcs = szBuf;delete [] szBuf;return TRUE;}BOOL AnsiToUtf8(const CStringA &strAnsi, CStringA &strUtf8){// Ansi 转换为 UcsCStringW strUcs;BOOL bRet = AnsiToUcs(strAnsi, strUcs);if (bRet == FALSE)return FALSE;// Ucs 转换为 Utf8return UcsToUtf8(strUcs, strUtf8);}BOOL Utf8ToAnsi(const CStringA &strUtf8, CStringA &strAnsi){// Utf8 转换为 UcsCStringW strUcs;BOOL bRet = Utf8ToUcs(strUtf8, strUcs);if (bRet == FALSE)return FALSE;// Ucs 转换为 AnsibRet = UcsToAnsi(strUcs, strAnsi);if (bRet == FALSE)return FALSE;return TRUE;}


原创粉丝点击