• 3297阅读
  • 6回复

unicode怎么转换成中文  然后显示出来啊 [复制链接]

上一主题 下一主题
离线misl1994
 

只看楼主 倒序阅读 楼主  发表于: 2017-09-12
我用的QString string=socket->readall(),但读出来的是u0006之类。。怎么转换成中文显示出来啊
QT~~~
离线小韩老师

只看该作者 1楼 发表于: 2017-09-12
从网络里读数据,当然不知道你的编码是啥,设置解码格式就可以了,比如什么gb2312,主要看发送方的编码格式
离线linker

只看该作者 2楼 发表于: 2017-09-12


  1. QString str = "\u4f60\u597d";
  2.     QTextCodec *codec = QTextCodec::codecForName("utf-8");  //定义使用utf-8编码
  3.     QByteArray ret = codec->fromUnicode(str);               //将unicode字符串用utf-8编码
  4.     QString string = QString::fromUtf8(ret);                //将utf-8编码的数据赋给QString
  5.     qDebug() << string;                                     //输出"你好"

我刚查Qt助手写的,不一定是最简单的,但是肯定没问题。
对于楼上,并没有回答楼主的疑问。所以希望回答问题多点真诚。
另外楼主,如果真的打算学Qt,还是多看看Qt助手吧,还是很方便的。
做土豆长大的孩纸
离线misl1994

只看该作者 3楼 发表于: 2017-09-13
回 小韩老师 的帖子
小韩老师:从网络里读数据,当然不知道你的编码是啥,设置解码格式就可以了,比如什么gb2312,主要看发送方的编码格式 (2017-09-12 19:40) 

打错了 。。。是serialport->readall,那边是单片机发的"hehe",我以为会是ascii码,但好像不对。。
QT~~~
离线misl1994

只看该作者 4楼 发表于: 2017-09-13
回 linker 的帖子
linker:QString str = "\u4f60\u597d";
    QTextCodec *codec = QTextCodec::codecForName("utf-8");  //定义使用utf-8编码
    QByteArray ret = codec->fromUnicode(str);      .. (2017-09-12 23:53) 

谢谢。有个地方我打错了。。是serialport->readall那边是单片机发的”hehe”,我对编码没概念。。。以为单片机是以ASCII码发。。但好像不对。。比较懵逼
QT~~~
离线小韩老师

只看该作者 5楼 发表于: 2017-09-13
标题
我确实没有手把手教楼主代码该怎么写,编码问题肯定是问题的关键,你发现你没有让楼主学习到问题的本质,你说我不真诚我就不同意了。难道手把手教写代码才是真诚,你这是授之以鱼,授之以渔不行啊,单片机硬件只懂皮毛我是没学过,我知道越底层的东西越和数据结构有关系,楼主应该去恶补一下数据和编码了,网络中传输的数据不管你是串口的还是网口的,基本是8bit的字节流,协议层只给你一个字节流,该怎么解释是你自己需要解决的,楼主应该是从操作流程上读取字节流在Qt中可以是QByteArray,然后对这个字节流进行操作解码
离线misl1994

只看该作者 6楼 发表于: 2017-09-13
回 小韩老师 的帖子
小韩老师:我确实没有手把手教楼主代码该怎么写,编码问题肯定是问题的关键,你发现你没有让楼主学习到问题的本质,你说我不真诚我就不同意了。难道手把手教写代码才是真诚,你这是授之以鱼,授之以渔不行啊,单片机硬件只懂皮毛我是没学过,我知道越底层的东西越和数据结构有关系,楼主应该 .. (2017-09-13 10:46) 

谢谢。。。我解决了。我原来的编码那些没问题,之前的程序也没问题,只是原来我把serialport初始化函数放在构造函数中,然后我把它移在了  打开串口的槽里。。数据就正常了。。不知道为什么。。
QT~~~
快速回复
限100 字节
 
上一个 下一个