• 5468阅读
  • 7回复

用QTcpSocket发中文给JAVA后台乱码的问题 [复制链接]

上一主题 下一主题
离线fangqi
 

只看楼主 倒序阅读 楼主  发表于: 2013-04-14
用QTcpSocket发送一个带有中文的包给JAVA写的后台服务端,JAVA后台采用的是utf-8的编码,代码如下:

QString userName = "哈哈哈";

userName = userName.toUtf8();

myArray.append(userName); //myArray为QByteArray类型

sock->write(userName);

我就是以这种方式把中文发送给后台,结果那边解出来的中文是乱码,麻烦,问一下大家应该怎么解决?
离线XChinux

只看该作者 1楼 发表于: 2013-04-14
先解决中文问题. Qt4 or Qt5 ? 源文件编码是什么?utf-8? gbk ? 这会导致你的"哈哈哈"到底能否正确如你所愿的是utf-8的.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线fangqi

只看该作者 2楼 发表于: 2013-04-15
我用的是QT4.8.0,编辑器用的是VS2008,源文件编码应该是GBK编码,我在main函数里加了两行代码:
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
我这里中文的显示没问题,但是发到那边去就乱码,麻烦问下应该怎么解决?
离线XChinux

只看该作者 3楼 发表于: 2013-04-15
userName = userName.toUtf8();

这一行不需要了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线fangqi

只看该作者 4楼 发表于: 2013-04-15
当然在我这边显示中文是没问题,但我是想要转化为UTF-8的编码写入字节流传到JAVA后台(采用的是UTF-8),能正常显示中文,如果我这边用GBK,传过去字节字节长度都不对了~
离线fangqi

只看该作者 5楼 发表于: 2013-04-15
就是我想解决把中文写入字节流,传到JAVA后台能显示中文~
离线XChinux

只看该作者 6楼 发表于: 2013-04-15
QString userName = "哈哈哈";

这一句本身就已经是从gbk转化了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线fangqi

只看该作者 7楼 发表于: 2013-04-15
我的问题已经解决了,谢谢版主
快速回复
限100 字节
 
上一个 下一个