Unicode与ANSI的转换

Posted 菜鸟也有高飞的时候

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unicode与ANSI的转换相关的知识,希望对你有一定的参考价值。

string UnicodeToANSI(const wstring& str)
{
    char *pStr;
    int iwstrLen = WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, 0, 0, 0, 0);
    cout << "iwstrlen=" << iwstrLen << endl;
    pStr = new char[iwstrLen +1];
    memset(pStr, 0, sizeof(char)*(iwstrLen + 1));
    WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, pStr, iwstrLen, 0, 0);
    string strText;
    strText = pStr;
    delete pStr;
    cout << "转换ANSI完成" << endl;
    return strText;
}

wstring ANSItoUnicode(const string& str)
{
    WCHAR *pwstr;
    int istrLen = MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, 0, 0);
    cout << "istrlen=" << istrLen << endl;
    pwstr = new WCHAR[istrLen + 1];
    memset(pwstr, 0, (istrLen + 1) * sizeof(WCHAR));
    MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, pwstr, istrLen);
    wstring wTemp = pwstr;
    delete pwstr;
    cout << "转换Unicode完成" << endl;
    return wTemp;
}

 

以上是关于Unicode与ANSI的转换的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ANSI 文本转换为 Unicode?

UNICODE ANSI转换

UNICODE ANSI转换

WinAPI FTPGetFile 从 ANSI 到 Unicode 的转换

如何将 DOS ANSI (CP 437) 文件转换为带有 Unicode 的 Unix ANSI?

Windows核心编程第二章,字符串的表示以及宽窄字符的转换