现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

gbk转换到utf8

2014-09-28 10:15 工业·编程 ⁄ 共 532字 ⁄ 字号 暂无评论

std::string gb2utf8(const std::string strGBK)

{   

    const char *str = strGBK.c_str();

    const unsigned int CP_GBK = 936;

    int len = MultiByteToWideChar(CP_GBK, 0, str, -1, NULL, 0);

    wchar_t* buf1 = new wchar_t[len + 1];

    memset(buf1, 0, (len + 1)* sizeof(wchar_t));

    MultiByteToWideChar(CP_GBK, 0, str, -1, buf1, len);

    len = WideCharToMultiByte(CP_UTF8, 0, buf1, -1, NULL, 0, NULL, NULL);

    char* buf2 = new char[len + 1];

    memset(buf2, 0, len + 1);

    WideCharToMultiByte(CP_UTF8, 0, buf1, -1, buf2, len, NULL, NULL);

    std::string ret = buf2;

    delete[] buf1;

    delete[] buf2;

    return ret;

}

给我留言

留言无头像?