zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    设计模式—适配器模式
    设计模式—策略模式 状态模式
    设计模式——装饰模式和代理模式
    C++常考算法
    ModelState.AddModelError使用
    Json
    ref与out
    三层与mvc
    新的方法(Set<T>)实现mvc的crud
    【程序45】
  • 原文地址:https://www.cnblogs.com/iRoad/p/4105172.html
Copyright © 2011-2022 走看看