查看完整版本: [-- unicode怎么转换成中文  然后显示出来啊 --]

QTCN开发网 -> Qt基础编程 -> unicode怎么转换成中文  然后显示出来啊 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

misl1994 2017-09-12 17:59

unicode怎么转换成中文  然后显示出来啊

我用的QString string=socket->readall(),但读出来的是u0006之类。。怎么转换成中文显示出来啊

小韩老师 2017-09-12 19:40
从网络里读数据,当然不知道你的编码是啥,设置解码格式就可以了,比如什么gb2312,主要看发送方的编码格式

linker 2017-09-12 23:53


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

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

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

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

misl1994 2017-09-13 09:10
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码发。。但好像不对。。比较懵逼

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

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

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


查看完整版本: [-- unicode怎么转换成中文  然后显示出来啊 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled