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

问题描述

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+"rn";
        }

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);
    }
时间: 2024-11-03 17:02:32

http-c++ post提交数据中文乱码的相关文章

java中form以post、get方式提交数据中文乱码问题总结_java

  一:form在前台以post方式提交数据:     浏览器将数据(假设为"中国")发送给服务器的时候,将数据变成0101的二进制数据(假设为98 99)时必然要查码表,浏览器以哪个码表打开网页,浏览器就以哪个码表提交数据.数据到达服务器后,数据(98 99)要封装到request中,在servlet中调用Request的getParameter方法返回的是字符串("中国"),方法内部拿到数字后要转成字符,一定要查码表,由于request的设计者是外国人,所以默认

javascript ajax提交数据中文乱码解决办法

一个UTF8页面需要POST数据到GB2312页面,这时中文的编码是按照UTF8提交过去的,GB2312页面无法接收.如何实现,网络搜索了一种很不错的方法,但有缺陷,这里一一说起. 1.FORM标签里加上accept-charset代码,这个能把FORM里的数据自动编码成指定的字符集提交,比如在UTF8页面提交数据到GB2312,代码就是accept-charset="GB2312″,但accept-charset除了IE其他浏览器都支持... 2.这时可以在提交时触发JS,document.c

struts2 action获取ajax提交数据中文乱码问题

有个人和我问题相同,地址在这: 解决方法: 在ajax的属性添加这句:contentType:'application/x-www-form-urlencoded; charset=utf-8',   

解决Ajax加载JSon数据中文乱码问题

一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { enable: true, url: basePath + '/sysMenu/listSysMenu', autoParam: ["id=parentId"] } SpringMvc中文字符处理: Java代码 <mvc:annotation-driven> <mvc

ubuntu下php向mysql插入数据中文乱码

问题描述 ubuntu下php向mysql插入数据中文乱码 查了很多东西,能配置的编码都配置成了utf8 解决方案 楼主,我的第一个采纳.. 解决方案二: http://www.linuxidc.com/Linux/2008-05/12967.htm 解决方案三: http://blog.csdn.net/pinghegood/article/details/6704673 解决方案四: 图片没有显示全来补充下 解决方案五: 解决方案六: 解决方案七: 解决方案八: 解决方案九: 创建数据库的时

asp.net 向 Oracle 添加数据 中文乱码

问题描述 asp.net 向 Oracle 添加数据 中文乱码 问题:asp.net 向oracle 插入中文乱码 oracle 字符集 AMERICAN_AMERICA.US7ASCII 而oracle的字符集是不可更改的.那么在程序如何处理? 解决方案 出现乱码的原因无非也就那么几个,要么代码的编码和数据库的不统一,要么从数据库获取数据的时候采取的编码出错,要么就是界面展示数据的时候出错了!不妨从这几个方面着手进行修改,希望对你有用 解决方案二: 搜到两个看起来靠谱的方法 1. 以上的大伙们

visual studio 2010-VS2010MFC向mysql的表里添加数据中文乱码怎样解决

问题描述 VS2010MFC向mysql的表里添加数据中文乱码怎样解决 VS2010MFC向mysql的表里添加数据中文乱码怎样解决添加中文数据时为乱码 解决方案 http://zhidao.baidu.com/link?url=v-2TA8JfFBl1xJw5_gDxKW9P7nN8yJ6NH0pGkWfSExWU4KZw3BZWcy1K_fStSoRE4Fk8aEr4tDTkUIIj4EeHma 解决方案二: mysql设置UTF8字符集,连接数据库的时候也指定字符集为UTF8,然后MFC中

flyway迁移数据中文乱码

问题描述 flyway迁移数据中文乱码 项目的编码方式为UTF-8 mian方法代码: import org.flywaydb.core.Flyway;public class App { private static String url = ""jdbc:mysql://localhost:3306/miaomiao""; private static String user = ""root""; private sta

PHP读取mssql json数据中文乱码的解决办法_php实例

PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. 解决办法如下: 这样,sql server 2008中的中文就可以在网页正常显示了. 如果要将中文正常插入到sql server 2008中,还要加入一条代码:$query = iconv("utf-8", "gbk//ignore", $query);//为了解决中文