2 gukong gukong 于 2013.11.26 15:41 提问

c++ post提交数据中文乱码

vc6.0 mfc
客户端用post提交中文数据,在web服务端接收是乱码,初步分析是编码问题,如果将中文转换成utf-8发送,则服务端能正常接收中文。

测试时我是借用的浏览器将中文转换成utf-8的,然后用转换后的字符串直接提换中文。
比如:

一:PostHttpPage("0.citygo.duapp.com","orderfrom_new","clientName=中文");
二:PostHttpPage("0.citygo.duapp.com","orderfrom_new","clientName=%E4%B8%AD%E6%96%87");

PostHttpPage函数借用其他人的,代码如下:

bool PostHttpPage(const std::string& hostName, const std::string& pathName, const std::string& postData)
{
using namespace std;

CInternetSession session("your");

try
{
    INTERNET_PORT nPort = 80;
    DWORD dwRet = 0;

    CHttpConnection* pServer = session.GetHttpConnection(hostName.c_str(), nPort);
    CHttpFile* pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, pathName.c_str());

    CString strHeaders = "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"; // 请求头

    //开始发送请求

    pFile->SendRequest(strHeaders,(LPVOID)postData.c_str(),postData.size());
    pFile->QueryInfoStatusCode(dwRet);


    if (dwRet == HTTP_STATUS_OK)
    {
        CString result, newline;

        while(pFile->ReadString(newline))
        {//循环读取每行内容
            result += newline+"\r\n";
        }

ofstream fout;
fout.open("output.txt");
fout<<result;
fout.close();
    }
    else
    {
        return false;
    }
    delete pFile;
    delete pServer;

}
catch (CInternetException* pEx)
{
    //catch errors from WinInet
    TCHAR pszError[200];
    pEx->GetErrorMessage(pszError, 200);

    std::cout<<pszError<<std::endl;//显示异常信息
    return false;
}
session.Close();

return true;

}

服务端代码如下:

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    request.setCharacterEncoding("UTF-8");
    PrintWriter out = response.getWriter();
     String rel=request.getParameter("clientName").toString();
        out.write(rel);
    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Struts2的action中处理JSONP方式提交的中文乱码问题:
昨天在做公司网站的时候出现了一个中文乱码问题,让我郁闷了一晚上和一上午,最后在网友的提示下,我终于解决了,现在写出来供后来的兄弟们参考: 1.问题是这样的,就是客户端是以JSONP的方式提交的数据,JSONP真正是以get方式提交的数据,所以除了post方式的解决办法是不行了,现在我说说我的这个方案:  >1.首先在js中给你要传递的参数编码:如下: >2然后在后头再给获取到的参数解
JQuery中Ajax的Post提交中文乱码的解决方案
引言: 在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,该如何解决呢?
C# 以Post方式提交数据
C# 以Post方式提交数据 C# 以Post方式提交数据
js后台post传值出现中文乱码解决方法
在“test.jsp”页面中,需要通过js将值传递到后台,后台根据传递的值进行数据查询时,通过test.jsp的js进行编码(粉色为编码),后台java解码(绿色为解码部分),可以解决 【test.jsp】 function test() { var faultAddr = encodeURI(document.getElementById("faultAddr").value);
Android HttpPost数据中文乱码的解决方案
在项目中,以HttpPost方式向服务器上提交数据时,服务器上中文竟然显示乱码,针对该种情况证明解决呢?其实,这样的问题,在架构的时候,就应该考虑到,如果牵扯到各个不同的平台应用,尽量统一使用UTF8编码,可以少很多麻烦。当然在post数据的时候,可以指定编码,请参阅下面的函数: · public Map CreateNote(int albumId, String title, St
ajax post 提交中文java后台获取参数出现乱码解决方法
代码示例: js端;两次转码
axios发送post请求,提交表单数据
解决办法一 你要是看下用法就解决了。。。 https://www.npmjs.com/package… 或者 https://github.com/mzabriskie… axios({ url: '/user', method: 'post', data: { firstName: 'Fred', lastName: 'Flintstone' }, ...
Form表单提交数据的乱码问题
面对多种编码方式,一旦处理不好或者稍有不慎,乱码问题就层出不穷,乱码问题是个巨坑啊~~~ 具体有哪些编码方式,自行百度或者见我写的某一篇博文,里面提到过之所以出现乱码是因为用了不同的码表去解码编码,好比对于同一把锁拿不同的钥匙去打开是万万不可行的。 下面,主要说一下如何解决Form表单提交数据出现的乱码问题 Form表单以Post方式提交数据 浏览器将数据(假设为“中国”)发送给服务器的时候
用普通的form表单提交数据到后台显示乱码
用普通的form表单提交数据,到后台接收数据时发现乱码,经测试,找到了解决方法: accept-charset="UTF-8"> 在form标签中加入accept-charset="UTF-8"解决。
JSP中Get提交方式的中文乱码解决
最近对JSP&Servlert的原理很感兴趣,所以今天花时间看了一下;无奈在一个编码问题上困扰很久 这是我的解决思路: (1)检查网页(html/jsp)页面的编码; (2)检查服务器端的处理编码的方式【包括:服务器response/request的编码设置;Tomcat的编码处理方式】 (3)检查数据库的编码【实际上本例中并没有用到,不过正式项目中我们也要考虑这个问题】 我的建