• vc++6.0中POST发送带有中文的十六进制数据网页中文显示乱码



    就像这样,中文传过去网站上显示的是 ???

    百度找到说是 在中文字符 入参时进行UTF-8编码处理,下面是代码:

    std::string String_TO_UTF8(std::string str)
    {
        int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);
        wchar_t * pwBuf = new wchar_t[nwLen + 1];
        ZeroMemory(pwBuf, nwLen * 2 + 2);
    
        ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen);
    
        int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL);
    
        char * pBuf = new char[nLen + 1];
        ZeroMemory(pBuf, nLen + 1);
    
        ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);
    
        std::string retStr(pBuf);
    
        delete[]pwBuf;
        delete[]pBuf;
    
        pwBuf = NULL;
        pBuf = NULL;
    
        return retStr;
    }
    
        //使用方法,先传入string数据,得到utf8编码处理过的string,再转为CString来使用即可
        //测试可行的,网站显示中文正常
        CString theString = "测试";
        string str;
        str = theString.GetBuffer(0);
        str = String_TO_UTF8(str);
    
        CString AllStr = str.c_str();
    

    记录一下。。。

  • 相关阅读:
    AtomicInteger原理分析
    packageinfo.java介绍
    SpringBoot 日志、配置文件、接口数据脱敏
    Gulp自动化构建分析
    RPC本质思考
    ES6 之 let 与 const
    Java属性转换工具分析
    AMQP协议模型及相关组件介绍
    Spring Bean生命周期分析
    PHP 脚本后台执行
  • 原文地址:https://www.cnblogs.com/ruandahua/p/16313581.html
Copyright © 2020-2023  润新知