当前位置:网站首页>QT串口ui设计和解决显示中文乱码
QT串口ui设计和解决显示中文乱码
2022-07-03 16:13:00 【红客白帽】
QT串口ui设计和解决显示中文乱码
【1】UTF-8和GBK
*UTF-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--UTF8
UTF8--Unicode--GBK、GB2312
*在简体中文windows系统下,ANSI编码代表GBK/GB2312编码,ANSI通常使用0x80~0xFF范围的2个字节来表示1个中文字符。
0x00~0x7F之间的字符,依旧是1个字节代表1个字符。Unicode(UTF-16)编码则所有字符都用2个字节表示。
【2】SerialTool.pro
【3】mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QSerialPort>//串口头文件
#include<QTextCodec>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void InitUI();
private:
Ui::MainWindow *ui;
QTextCodec *codec;
};
#endif // MAINWINDOW_H
【4】mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("Serial Tool");
//codec = QTextCodec::codecForName("UTF-8");
codec = QTextCodec::codecForName("GBK");//System(简体中文windows系统默认指的是GBK编码)
QTextCodec::setCodecForLocale(codec);
InitUI();//初始化串口
}
MainWindow::~MainWindow()
{
delete ui;
}
//初始化控件
void MainWindow::InitUI()
{
//端口名称
for(int i=0;i<10;i++)
{
ui->CB_portname->addItem(QString("COM%1").arg(i));//添加文本 【追加形式】
}
//波特率 【追加形式】
ui->CB_btl->addItem(QString("1200") ,QSerialPort::Baud1200);
ui->CB_btl->addItem(QString("2400") ,QSerialPort::Baud2400);
ui->CB_btl->addItem(QString("4800") ,QSerialPort::Baud4800);
ui->CB_btl->addItem(QString("9600") ,QSerialPort::Baud9600);
ui->CB_btl->addItem(QString("19200") ,QSerialPort::Baud19200);
ui->CB_btl->addItem(QString("115200") ,QSerialPort::Baud115200);
//数据位
ui->CB_databit->addItem(QString("5"),QSerialPort::Data5);
ui->CB_databit->addItem(QString("6"),QSerialPort::Data6);
ui->CB_databit->addItem(QString("7"),QSerialPort::Data7);
ui->CB_databit->addItem(QString("8"),QSerialPort::Data8);
//奇偶校验位
ui->CB_jioubit->addItem(codec->toUnicode("无"),QSerialPort::NoParity);
ui->CB_jioubit->addItem(codec->toUnicode("奇"),QSerialPort::EvenParity);
ui->CB_jioubit->addItem(codec->toUnicode("偶"),QSerialPort::OddParity);
//停止位
ui->CB_stopbit->addItem(QString("1"),QSerialPort::OneStop);
ui->CB_stopbit->addItem(QString("1.5"),QSerialPort::OneAndHalfStop);
ui->CB_stopbit->addItem(QString("2"),QSerialPort::TwoStop);
//流控制
ui->CB_flowctrl->addItem("None",QSerialPort::NoFlowControl);//无
ui->CB_flowctrl->addItem("RTS/CTS",QSerialPort::HardwareControl);//硬件控制
ui->CB_flowctrl->addItem("XON/XOFF",QSerialPort::SoftwareControl);//软件控制
}
【5】mainwindow.ui
【6】运行效果
Love YOU
边栏推荐
- 初试scikit-learn库
- 利用MySQL中的乐观锁和悲观锁实现分布式锁
- Principles of several common IO models
- 《天天数学》连载56:二月二十五日
- June to - -------
- [combinatorics] summary of combinatorial identities (eleven combinatorial identities | proof methods of combinatorial identities | summation methods)*
- Brush questions -- sword finger offer
- Chinese translation of Tagore's floating birds (1~10)
- How to use AAB to APK and APK to AAB of Google play apps on the shelves
- 用通达信炒股开户安全吗?
猜你喜欢
TCP擁塞控制詳解 | 3. 設計空間
深度学习之三维重建
TCP拥塞控制详解 | 3. 设计空间
[200 opencv routines] 217 Mouse interaction to obtain polygon area (ROI)
[web security] - [SQL injection] - error detection injection
Three dimensional reconstruction of deep learning
Myopia: take off or match glasses? These problems must be understood clearly first
Mb10m-asemi rectifier bridge mb10m
"Remake Apple product UI with Android" (3) - elegant statistical chart
Microservices Seata distributed transactions
随机推荐
Low level version of drawing interface (explain each step in detail)
Nine ways to define methods in scala- Nine ways to define a method in Scala?
【声明】关于检索SogK1997而找到诸多网页爬虫结果这件事
Slam learning notes - build a complete gazebo multi machine simulation slam from scratch (4)
Pandora IOT development board learning (HAL Library) - Experiment 5 external interrupt experiment (learning notes)
Go language self-study series | if else statement in golang
用同花顺炒股开户安全吗?
工资3000,靠“视频剪辑”月入40000:会赚钱的人,从不靠拼命!
利用MySQL中的乐观锁和悲观锁实现分布式锁
远程文件包含实操
Unity项目优化案例一
深入理解 SQL 中的 Grouping Sets 语句
Is it safe to open an account with flush?
ASEMI整流桥UMB10F参数,UMB10F规格,UMB10F封装
Persisting in output requires continuous learning
The mixlab editing team is recruiting teammates~~
Approval process design
Expression of request header in different countries and languages
无心剑中译泰戈尔《漂鸟集(1~10)》
Redis高可用与持久化