MFC POST提交中文后台乱码

离水的鱼儿 2017-12-01 04:38:14
我POST数字或者英文是没问题的,中文不行,我网页是UTF-8的,我把数据转成UTF-8也不行。不知道是什么原因。
...全文
344 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
离水的鱼儿 2017-12-04
  • 打赏
  • 举报
回复
引用 8 楼 smwhotjay 的回复:
首先vc 没有utf8 ,那么你只有自己转码成utf8 把mfc设置ansi编码,然后 GBKToUTF8 将GBK转换成UTF8,post

// 1、将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;
}
完美!!!!谢谢大佬,终于解决了~~~~~
smwhotjay 2017-12-04
  • 打赏
  • 举报
回复
首先vc 没有utf8 ,那么你只有自己转码成utf8 把mfc设置ansi编码,然后 GBKToUTF8 将GBK转换成UTF8,post

// 1、将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;
}
离水的鱼儿 2017-12-04
  • 打赏
  • 举报
回复
引用 2 楼 smwhotjay 的回复:
mfc工程有ansi/utf16 你post 给utf8网页,肯定要一致。
CHttpClient http; CString data=L"沈雪冰"; wchar_t *pwtext=NULL; DWORD num=MultiByteToWideChar(CP_ACP,0,data,-1,NULL,0); pwtext=new wchar_t[num]; MultiByteToWideChar(CP_ACP,0,data,-1,pwtext,num); data=pwtext; CString result; http.addParam("data",data); result=http.doPost("http://192.168.0.115:8080/ca/helloworld.action"); printf("%s\n",result); getchar(); 这样对吗?
离水的鱼儿 2017-12-04
  • 打赏
  • 举报
回复
引用 4 楼 l357630798 的回复:
应该是字符编码问题。
肯定是编码问题 但是转来转去也就那样啊
离水的鱼儿 2017-12-04
  • 打赏
  • 举报
回复
引用 3 楼 zqckzqck 的回复:
MFC工程中使用socket发送最好不用中文进行发送。
那我中文数据怎么办?
l357630798 2017-12-02
  • 打赏
  • 举报
回复
应该是字符编码问题。
夫人的泡泡鱼 2017-12-01
  • 打赏
  • 举报
回复
MFC工程中使用socket发送最好不用中文进行发送。
smwhotjay 2017-12-01
  • 打赏
  • 举报
回复
mfc工程有ansi/utf16 你post 给utf8网页,肯定要一致。
赵4老师 2017-12-01
  • 打赏
  • 举报
回复
学会使用抓包软件wireshark

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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