Qt接收到汉字并显示,汉字显示为问号??

gaosunqiong 2013-11-06 02:45:12
在开发板上通过Qt实现一个接收串口的数据并显示的程序,接收到的字母和数字都能正常显示,可是接收汉字时只能显示问号(??)不能显示出汉字来。如果在程序中输入汉字运行的话可以正常显示汉字,但是通过串口的就不行。我的代码如下:

#include "widget.h"
#include <QTextCodec>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
Widget w;
w.show();

return a.exec();
}

//读取数据
void Widget::readMyCom()
{
QByteArray temp = myCom->readAll();

if(!temp.isEmpty()){
QString string = QString::fromLocal8Bit(temp);
settingDisplay(string);
} else {
QString string ="1 0 0 0 0 10 10 50 10 10 255 255 255 显示内容";
settingDisplay(string);
}

}
...全文
1594 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_57556399 2021-07-19
  • 打赏
  • 举报
回复

强啊!!谢谢!

qq_15506067 2016-04-28
  • 打赏
  • 举报
回复
9楼牛~~~~~成功了!
隐形部落格 2016-04-09
  • 打赏
  • 举报
回复
引用 9 楼 LazyDreamHunter 的回复:
QByteArray byteArray = pSocket->readAll(); QString str = QString::fromLocal8Bit(byteArray.constData());
9楼真牛逼!!!!!!qt5+stc15单片机验证好使!!!!
gaofto 2015-10-29
  • 打赏
  • 举报
回复
很牛逼,成功了
寒山-居士 2013-11-08
  • 打赏
  • 举报
回复
编码这个问题 一直是困扰国内开发者的头痛问题,串口接收就像http连接一样 对需要设置一样的编码,这样双方都能正确显示汉字
gaosunqiong 2013-11-08
  • 打赏
  • 举报
回复
引用 10 楼 LazyDreamHunter 的回复:
这是接收端代码,Qt的
谢谢啊!我试试看行不行!
RabinSong 2013-11-07
  • 打赏
  • 举报
回复
QString str = ""; //待发送的串 int len = fileName.length(); //把它都转换为宽字符 QChar *pws = (QChar *)fileName.unicode(); for (int i = 0; i < len; i++) { str += pws[i]; } //再发送str
gaosunqiong 2013-11-07
  • 打赏
  • 举报
回复
引用 5 楼 LazyDreamHunter 的回复:
你单片机支持汉字吗
支持啊!我接收这边怎样实现?
RabinSong 2013-11-07
  • 打赏
  • 举报
回复
这是接收端代码,Qt的
RabinSong 2013-11-07
  • 打赏
  • 举报
回复
QByteArray byteArray = pSocket->readAll(); QString str = QString::fromLocal8Bit(byteArray.constData());
gaosunqiong 2013-11-07
  • 打赏
  • 举报
回复
引用 7 楼 LazyDreamHunter 的回复:
QString str = ""; //待发送的串 int len = fileName.length(); //把它都转换为宽字符 QChar *pws = (QChar *)fileName.unicode(); for (int i = 0; i < len; i++) { str += pws[i]; } //再发送str
接收端呢?Qt的话怎样实现呢?谢谢啊!
RabinSong 2013-11-06
  • 打赏
  • 举报
回复
你单片机支持汉字吗
gaosunqiong 2013-11-06
  • 打赏
  • 举报
回复
引用 3 楼 LazyDreamHunter 的回复:
没有,这个是必须的,要不然不知道怎么解析啊
如果我想从单片机接收ASCALL码的汉字,要怎样配置才能够显示出来?
RabinSong 2013-11-06
  • 打赏
  • 举报
回复
没有,这个是必须的,要不然不知道怎么解析啊
gaosunqiong 2013-11-06
  • 打赏
  • 举报
回复
引用 1 楼 LazyDreamHunter 的回复:
这是编码问题,你需要在发送端以种编码方式发送,接收端再以同样的编码接收
我是使用友善之臂的串口工具发送数据的啊!不知道用什么编码发送的?难道就没有别的方法了吗?
RabinSong 2013-11-06
  • 打赏
  • 举报
回复
这是编码问题,你需要在发送端以种编码方式发送,接收端再以同样的编码接收

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧