create显示中文乱码 qt_Ubuntu下Qt串口助手接收中文乱码问题
问题描述:
在ubuntu中用Qt开发的串口助手,在接收单片机(STM32 F103)发来的中文时,出现乱码情况。
问题已解决,感谢Qt交流qq群中的各位大佬。
解决思路:
可以检查一下两个串口通信的波特率是否一致。如果发送的是字符串,用fromUtf8函数将收到的字节流转化为字符串才能显示;如果发送的是数值,要根据数据包协议将接收到的字节流解析成具体数值,然后转换为字符串来显示。——培培哥
1. 单片机端的代码
重要的事情说三遍:
keil 是gbk编码!
keil 是gbk编码!
keil 是gbk编码!
2. ubuntu下Qt中的代码
首先, readAll()函数返回QByteArray类型的数据
//从接收缓冲区中读取数据
QByteArray buffer = serial.readAll();
那么,我们要做的就是把QByteArray类型的数据——>GBK编码的字符串
//从接收缓冲区中读取数据
QByteArray buffer = serial.readAll(); // readAll()函数返回QByteArray类型的数据
QTextCodec *tc = QTextCodec::codecForName("GBK");
QString str = tc->toUnicode(buffer);
通过编写上面这段代码,我们要明白的是:GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换
Qt编码知识
Qt常见的两种编码是:UTF-8和GBKUTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。GBK是GB2312的扩展,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名。GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:GBK、GB2312--Unicode--UTF8UTF8--Unicode--GBK、GB2312 在简体中文windows系统下,ANSI编码代表GBK/GB2312编码,ANSI通常使用0x80~0xFF范围的2个字节来表示1个中文字符。0x00~0x7F之间的字符,依旧是1个字节代表1个字符。Unicode(UTF-16)编码则所有字符都用2个字节表示。
参考:
https://blog.csdn.net/gllg1314/article/details/46989953
https://blog.csdn.net/weixin_42837024/article/details/81630720
https://blog.csdn.net/iamplane/article/details/78218913
https://blog.csdn.net/hejinjing_tom_com/article/details/77780565
3. 测试结果
目前是可以显示中文了,但是仍偶尔会出现小部分的乱码,需要进一步测试是否会引起其他问题!
4. 好文总结
(1)https://blog.csdn.net/ouening/article/details/89469468 (显示中文)
(2)linux qt串口助手 - 搜索结果 - 知乎 (显示中文)
(3)https://blog.csdn.net/weixin_42837024/article/details/81630720 (编码转换)
(4)https://blog.csdn.net/gllg1314/article/details/46989953 (编码转换)
(5)QT 制作串口调试小助手----(小白篇)
(6)https://download.csdn.net/download/xuebupt/10810096 (CSDN例子)
(7)https://download.csdn.net/download/qq_39736982/10543886 (CSDN例子)
(8) https://blog.csdn.net/iamplane/article/details/78218913 (Qt编码方式)
(9) https://blog.csdn.net/hejinjing_tom_com/article/details/77780565 (编码转换)
create显示中文乱码 qt_Ubuntu下Qt串口助手接收中文乱码问题相关推荐
- STM32在Keil中使用串口助手打印中文字符出现乱码问题
问题 问题如下,中文字符显示乱码,但数字正常. 原因 通常这种在串口助手打印出现乱码情况: 无非是波特率设置错误,不对应.就像一个滴水的水龙头,水滴进一个循环开合的容器,双方速率不能很好匹配,一定会出 ...
- QT串口助手-ZUA课设
QT串口助手 成品展示 QT全部程序构成 zua.pro serial.h main.cpp serial.cpp serial.ui Keil全部程序构成 main.c stm32f10x_conf ...
- 使用qt在windows的vs下写串口助手
这是一篇总结性的文章,主要记录一下自己在写串口助手时遇到的问题和解决方案. 1 如果你和我一样,刚开始接触qt,那写一个可用的串口助手,可以按照下面这些文章的顺序开始. 1 图解Qt安装(Window ...
- qt 串口发送char 数组乱码_串口的波特相差多大会误码
遇到波特率收到乱码的情况. 如下图所示,MCU一直发送0x55,但是PC接收错误. UART的波特率为115200bps,在12MHz 主频条件下,用电脑PC曾经能够正常接收数据. --------- ...
- Linux下QT串口通过无线模块收发十六进制数据
前段时间写了一个关于WiMi-Net简要的收发码以及CRC校验的博客(http://blog.csdn.net/u011348999/article/details/16803829) 然后一直说把Q ...
- QT串口助手(串口的查找和打开)
文章目录 前言 一.查找存在的串口将串口添加进选择框 二.打开串口功能的实现 总结 前言 本篇文章将正式的带大家实现串口的查找添加,和打开串口的功能. 一.查找存在的串口将串口添加进选择框 创建一个Q ...
- 上位机开发C#语言:模拟STC串口助手接收单片机发送数据
题目概述: 设计一个模拟STC串口助手,通过串口进行接收或发送数据. STC串口助手: 编程: using System; using System.Collections.Generic; usin ...
- android串口发送二进位,stm32107串口发送数据的数据用串口助手接收发现数据不对...
下面是我用的STM32单片机串口5的初始化 然后再主函数里面一直发送数据 串口助手的相关配置和串口的配置一样 但是接收的数据和自己发送的数据不一致下面是串口5的初始化(单片机用的是CP2102芯片转U ...
- 解决Ubuntu18.04下Qt中无法输入中文的问题
问题描述:我的中文输入法是搜狗的,但在qt中写代码时一直无法切换成中文,重启无效! 原因:安装的qt中缺少中文输入环境 解决办法: 进入到/usr/lib/x86_64-linux-gnu/qt5/p ...
最新文章
- 超级的全中文语音数据集合
- 【数字信号处理】相关函数应用 ( TDOA 时差估计实例 | 调制波特率 | 带宽 | 码元数量 | 信息量 )
- 从零开始编写深度学习库(四)Eigen::Tensor学习使用及代码重构
- iOS-Senior20-Map定位
- Windows 7系统快捷键汇总
- python自动化办公教程百度云-用Python自动办公,做职场高手,16章完整版百度云盘...
- opencv学习第6课官方练习实现 Create a Paint application with adjustable colors and brush radius using trackbars
- Apache部署多个WordPress网站
- windows终止处理程序( __try __finally) 简单解析
- win10易升_易升win10失败怎么办
- ensembl-vep/VEP 注释软件安装及测试 超简单版(conda vep、百度网盘数据库)
- 十分好用PDF转换成PPT转换器
- mybaties中resultMap和resultType的区别
- BGP和BGP机房各为什么?优势在哪?
- [VS2010]逸雨清风 校园网视频,网吧视频(光音网视)下载器 V0.26
- MEMOS 技术支持
- 什么是 CSDN ?
- 2020-08-09 我来邀请码
- linux usb 网络摄像头,树莓派|Linux有问必答:如何在树莓派上安装USB网络摄像头...
- 浅谈二维和三维图像数据
热门文章
- 判断表达式是否正确闭合,返回未闭合元素的下标。
- 访问控制列表(二)配置命令
- Rsync+Inotify操作文档
- php中::双冒号有什么作用
- Facebook如何重新设计HHVM JIT编译器的性能
- 玩转linux——Screen管理远程会话,再也不怕关闭SSH就中断会话了
- win2008r2 or centos6 硬盘挂载
- pat乙级相当于什么水平_英语四六级/专四/专八相当于美国人什么水平?
- python解不定积分_python快速求解不定积分和定积分
- 曾辉机器人_武汉一高校大学生研发深度学习机器人 会打太极、跳舞