• 8305阅读
  • 6回复

[提问]Qt5发送http get请求,服务端接收中文乱码 [复制链接]

上一主题 下一主题
离线孺儒
 

只看楼主 倒序阅读 楼主  发表于: 2017-01-04
Qt5发送http get请求,服务端接收中文乱码
代码如下:
void HttpTest::testGet(){

       QNetworkAccessManager* manager = new QNetworkAccessManager(this);
       QNetworkRequest request;
       request.setUrl(QUrl("http://127.0.0.1:5678/zzjfnew/test.jsp?xmlData=<DATA><SBBH>10000001</SBBH><PPZH>测试</PPZH><FLAG>1</FLAG>      </DATA>"));
       QNetworkReply* reply = manager->get(request);
  }
在服务端接收到的数据如下:  “xmlData:<DATA><SBBH>10000001</SBBH><PPZH>娴??</PPZH><FLAG>1</FLAG></DATA>”,服务端用的是GBK编码。在程序里试过各种 qt解决中文乱码的方法都不行,跪求解决方法……
离线圣域天子

只看该作者 1楼 发表于: 2017-01-04
  1. namespace TIANCHI
  2. {
  3. static QTextCodec* tianchi_gbkCodec = QTextCodec::codecForName("GBK");
  4. }
  5. QString GbkToUtf8(const QByteArray& gbkString)
  6. {
  7.     return TIANCHI::tianchi_gbkCodec->toUnicode(gbkString);
  8. }
  9. QByteArray Utf8ToGbk(const QString& utf8String)
  10. {
  11.     return TIANCHI::tianchi_gbkCodec->fromUnicode(utf8String);
  12. }

离线孺儒

只看该作者 2楼 发表于: 2017-01-04
回 圣域天子 的帖子
圣域天子:namespace TIANCHI
{
static QTextCodec* tianchi_gbkCodec = QTextCodec::codecForName("GBK");
}
QString GbkToUtf8(const QByteArray& gbkString)
....... (2017-01-04 12:43) 

谢谢您的解答! 不过还是乱码……
Utf8ToGbk 后服务端收到的是:“xmlData:<DATA><SBBH>10000001</SBBH><PPZH>锟斤拷锟斤拷</PPZH><FLAG>1</FLAG></DATA>”
GbkToUtf8后服务端收到的是:“xmlData:<DATA><SBBH>10000001</SBBH><PPZH>濞村???/PPZH><FLAG>1</FLAG></DATA>”
还望再施以援手,谢谢!
离线圣域天子

只看该作者 3楼 发表于: 2017-01-04
回 孺儒 的帖子
孺儒:谢谢您的解答! 不过还是乱码……
Utf8ToGbk 后服务端收到的是:“xmlData:<DATA><SBBH>10000001</SBBH><PPZH>锟斤拷锟斤拷</PPZH><FLAG>1</FLAG></DATA>”
GbkToUtf8后服务端收到的是:“xmlData:<DATA><SBBH>1000 .. (2017-01-04 13:30) 

你的Qt代码可能不是UTF8?中间传输过程的编码没有规范。
服务端是Qt吗?
离线孺儒

只看该作者 4楼 发表于: 2017-01-04
回 圣域天子 的帖子
圣域天子:
你的Qt代码可能不是UTF8?中间传输过程的编码没有规范。
服务端是Qt吗?



是在这里设置吗?
而且我也在main()函数里加了
QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForLocale(codec);服务端用Java写的
离线圣域天子

只看该作者 5楼 发表于: 2017-01-04
你在Qt发送前先转成GBK的
应该就可以了,我以前也搞过跟java/gbk的通讯,很EASY就可以转的
多试几次吧
离线孺儒

只看该作者 6楼 发表于: 2017-01-04
回 圣域天子 的帖子
圣域天子:你在Qt发送前先转成GBK的
应该就可以了,我以前也搞过跟java/gbk的通讯,很EASY就可以转的
多试几次吧 (2017-01-04 14:08) 

就是会不会是服务端有问题呢?发现把链接直接用浏览器打开时,只有IE浏览器中文不乱码,其他浏览器,如谷歌、360等也是乱码,这是什么原因呢?
快速回复
限100 字节
 
上一个 下一个