libcurl post 中文数据乱码

Gavin132 2015-11-02 05:47:42
使用libcurl post json数据,当包含中文时中文会乱码,改用的方法 header 设置 也用过了 还是乱码,代码如下:
CURLcode Curl::sendData(const std::string ¤tUrl,const std::string data)
{
CURLcode res;
struct curl_slist *head = NULL;
head = curl_slist_append(head, "Content-Type: application/x-www-form-urlencoded; charset=UTF-8");
//head = curl_slist_append(NULL, "Content-Type: application/x-www-form-urlencoded; charset=GB2312");
std::string outData = packetData(data);
//std::string outData = "[{ \"headers\" :{\"namenode\" : \"in header1 ,namenode.example.com\",\"datanode\" : \"in header2,random_datanode.example.com\"},\"body\" : \"haha,this is body\"}]";
//printf("after json:%s\n",outData.c_str());
curl_easy_setopt(m_Curl, CURLOPT_POSTFIELDS,outData.c_str()); // 指定post内容
curl_easy_setopt(m_Curl, CURLOPT_URL, currentUrl.c_str());
//curl_easy_setopt(m_Curl, CURLOPT_WRITEFUNCTION, OnWriteData);
curl_easy_setopt(m_Curl, CURLOPT_HEADER, head);
curl_easy_setopt(m_Curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(m_Curl, CURLOPT_CONNECTTIMEOUT,3);
curl_easy_setopt(m_Curl, CURLOPT_TIMEOUT, 1000);
res = curl_easy_perform(m_Curl);
curl_slist_free_all(head);
return res;
}
...全文
2012 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gavin132 2015-11-04
  • 打赏
  • 举报
回复
已经解决, curl_easy_setopt(m_Curl, CURLOPT_HEADER, head); 这个的错误导致没有设置成功 正确为curl_easy_setopt(m_Curl, CURLOPT_HTTPHEADER, head); 网上随意摘抄的 好难相出是这种问题 不正确的代码随意贴出来 太坑爹了
Gavin132 2015-11-04
  • 打赏
  • 举报
回复
谢谢5楼 head = curl_slist_append(head, "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"); 设置了没有起效 抓包发现
湖中仙人 2015-11-04
  • 打赏
  • 举报
回复
我之前遇到的是WINDOWS下中文变乱码,当时是因为数据库中字段类型的原因,我将varchar类型改为nvarchar 类型后就好了;你可以试下,希望对你有用
Gavin132 2015-11-03
  • 打赏
  • 举报
回复
linux C 字符串转utf-8格式咋转的?请高手帖源码
Gavin132 2015-11-03
  • 打赏
  • 举报
回复
head = curl_slist_append(NULL, "Content-Type: application/x-www-form-urlencoded; charset=GB2312"); 也试过 是乱码
Gavin132 2015-11-03
  • 打赏
  • 举报
回复
head = curl_slist_append(NULL, "Content-Type: application/x-www-form-urlencoded; charset=GB2312"); 也试过 是乱码
shoppo0505 2015-11-02
  • 打赏
  • 举报
回复
一般来说,含中文的话,都会使用GB2312字符集。

22,297

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧