• utf8转gbk,libcurl中文乱码处理


    这两个转码在网页客户端处理用很常见,所使用的平台为VS2010,字符集采用多字节字符集

    utf8转gbk

    string UTF8ToGBK(const std::string& strUTF8)  
    {  
        int len = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0);  
        WCHAR* wszGBK = new WCHAR[len+1];
        memset(wszGBK, 0, len * 2 + 2);  
        MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUTF8.c_str(), -1, wszGBK, len);  
      
        len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);  
        char *szGBK = new char[len + 1];  
        memset(szGBK, 0, len + 1);  
        WideCharToMultiByte(CP_ACP,0, wszGBK, -1, szGBK, len, NULL, NULL);   
        std::string strTemp(szGBK);  
        delete[]szGBK;  
        delete[]wszGBK;  
        return strTemp;  
    } 
    View Code

    gbk转utf8

    string GBKToUTF8(const std::string& strGBK)  
    {  
        string strOutUTF8 = "";  
        WCHAR * str1;  
        int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0);  
        str1 = new WCHAR[n];  
        MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, str1, n);  
        n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);  
        char * str2 = new char[n];  
        WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, NULL, NULL);  
        strOutUTF8 = str2;  
        delete[]str1;  
        str1 = NULL;  
        delete[]str2;  
        str2 = NULL;  
        return strOutUTF8;  
    } 
    View Code
  • 相关阅读:
    设计模式-抽象工厂模式
    装修预算-资料收集
    SQL中存储过程和函数的区别
    View
    数据表优化
    Entity Framework 基础
    html5标准
    JS整数验证
    vue 页面切换从右侧切入效果
    vue动态设置Iview的多个Input组件自动获取焦点
  • 原文地址:https://www.cnblogs.com/iRoad/p/4105172.html
Copyright © 2020-2023  润新知