您的位置:首页 > 编程语言 > C语言/C++

C++中,将.txt文件的编码由UTF-8转换为ANSI

2012-02-29 21:28 549 查看
1,将UTF-8转换为

int Utf8ToAnsi(const char *pstrUTF8, char *pstrAnsi)

{

int i = 0;

int j = 0;

char strUnicode[200] = {0};

i = MultiByteToWideChar(CP_UTF8, 0, pstrUTF8, -1, NULL, 0);

memset(strUnicode, 0, i);

MultiByteToWideChar(CP_UTF8, 0, pstrUTF8, -1, strUnicode, i);

j = WideCharToMultiByte(CP_ACP, 0, strUnicode, -1, NULL, 0, NULL, NULL);

WideCharToMultiByte(CP_ACP, 0, strUnicode, -1, pstrAnsi, j, NULL, NULL);

return 0;

}

2,其他的编码转换

qp::StringW Global::AnsiToUnicode(const char* buf)

{

int len = ::MultiByteToWideChar(CP_ACP, 0, buf, -1, NULL, 0);

if (len == 0) return L"";

std::vector<wchar_t> unicode(len);

::MultiByteToWideChar(CP_ACP, 0, buf, -1, &unicode[0], len);

return &unicode[0];

}

qp::StringA Global::UnicodeToAnsi(const wchar_t* buf)

{

int len = ::WideCharToMultiByte(CP_ACP, 0, buf, -1, NULL, 0, NULL, NULL);

if (len == 0) return "";

std::vector<char> utf8(len);

::WideCharToMultiByte(CP_ACP, 0, buf, -1, &utf8[0], len, NULL, NULL);

return &utf8[0];

}

qp::StringW Global::Utf8ToUnicode(const char* buf)

{

int len = ::MultiByteToWideChar(CP_UTF8, 0, buf, -1, NULL, 0);

if (len == 0) return L"";

std::vector<wchar_t> unicode(len);

::MultiByteToWideChar(CP_UTF8, 0, buf, -1, &unicode[0], len);

return &unicode[0];

}

qp::StringA Global::UnicodeToUtf8(const wchar_t* buf)

{

int len = ::WideCharToMultiByte(CP_UTF8, 0, buf, -1, NULL, 0, NULL, NULL);

if (len == 0) return "";

std::vector<char> utf8(len);

::WideCharToMultiByte(CP_UTF8, 0, buf, -1, &utf8[0], len, NULL, NULL);

return &utf8[0];

}

程序来自http://topic.csdn.net/u/20101008/12/895e5aaa-3db5-4c9f-8d06-ae7b04913132.html。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: