• 6297阅读
  • 6回复

网络传递,中文无法正常显示 [复制链接]

上一主题 下一主题
离线yang_huafeng
 

只看楼主 倒序阅读 楼主  发表于: 2009-06-03
— 本帖被 XChinux 从 Qt for Linux/X11 移动到本区(2010-02-08) —

一端用Delphi来发送数据,

一端用QT来接收数据,QT自己本身可以显示中文,相关代码具体如下:
  QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));

-----------------
           QByteArray datagram;

            while (MediaUdpSocket.hasPendingDatagrams())
            {
                datagram.resize(MediaUdpSocket.pendingDatagramSize());
                MediaUdpSocket.readDatagram(datagram.data(), datagram.size());
            }
            qDebug("测试abc");   //QT本身显示中文正常
            qDebug()<<QObject::trUtf8(datagram.data());  //如果是英文和数字正常,如果是汉字就显示问号,怎么办???




QT使用中...
离线yang_huafeng

只看该作者 1楼 发表于: 2009-06-03
补充:
      我是从windows XP下已流的形式传的数据,是不是Windows的汉字编码方式传到linux下不能简单的用trUtf8来转换,或者是trUtf8根本就转不了?
QT使用中...
离线anly
只看该作者 2楼 发表于: 2009-06-03
应该是Dephi发送时编码不是utf8,所以导致成?了
离线anly
只看该作者 3楼 发表于: 2009-06-03
直接用qDebug() << QString(datagram)试试
离线yang_huafeng

只看该作者 4楼 发表于: 2009-06-03
qDebug() << QString(datagram)我也试过了,一样的乱码,

我也怀疑是windows下delphi这边的编码格式,在linux下不能识别的问题,现在是有没啥子办法来解决这个问题
QT使用中...
离线yang_huafeng

只看该作者 5楼 发表于: 2009-06-03
问题已解决,方法是使用qDebug()<<((QTextCodec *)(QTextCodec::codecForName("GB2312")))->toUnicode(datagram);

转换为GB2312格式就可以了

谢谢各位的回复!
QT使用中...
离线wd007

只看该作者 6楼 发表于: 2009-06-03
两边设置为一样的编码,都是GB2312或者utf8试试
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
快速回复
限100 字节
 
上一个 下一个