QTextEdit显示中文乱码解决,中文GB2312转Unicode,QString、QByteArray 转换,16进制显示,toUtf8与toLocal8Bit区别
QString、QByteArray 的等效转换:
QByteArray = QString.toUtf8();// 转换为Unicode字符集编码,多字节编码,单个中文占3~4个字节
QByteArray = QString.toLocal8Bit();// 转换为GB2312/GBK字符集编码,单个中文占2个字节
QString = QByteArray;
QString、QByteArray asc2转换为16进制显示:
QByteArray可以直接转换为16进制显示:QByteArray.toHex()
QString不能直接转换为16进制显示,要先转换为QByteArray,再16进制显示:
QString.toUtf8().toHex()// 转换为Unicode字符集编码
QString.toLocal8Bit().toHex()// 转换为GB2312/GBK字符集编码
QString的16进制显示转换为 asc2显示:
QString txtBuf = "616263414243";// "abcABC"的16进制显示
QString/QByteArray str1 = QByteArray::fromHex(txtBuf.toUtf8());// 这种转换方式可忽略掉中间空格
QTextEdit显示GB2312中文:
GB2312/GBK/GB18030区别:https://www.zhihu.com/question/19677619
GB2312/GBK采用双字节编码。GB18030采用多字节编码,每个字可以由 1 个、2 个或 4 个字节组成。
GB2312的中文是2字节,unicode/UTF8/16的中文是3~4个字节。而Qt控件的QString都是以unicode编码的,所以gb2312编码的中文不能直接放到QString里,会显示乱码,需要做下转换:
// 将GB2312编码转换成unicode,并用QTextEdit显示
QString str = "中文";
QString sendData = QTextCodec::codecForName("GB2312")->toUnicode(str.toLocal8Bit());// 使用toLocal8Bit()转换为GB2312编码,再用QTextCodec将GB2312转换为Unicode
ui->txtSend->setText(sendData);// 中文显示正常
综合例程:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
#include <QTextCodec>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QString str = "中文";// QString 与 QByteArray 相互转换QString sendData_1 = str.toUtf8();// 中文正常显示。sendData_1/2/x 类型为 QByteArray 也是一样的效果QString sendData_2 = str.toLocal8Bit();// 中文显示乱码// 将原码转换为16进制。为了看清内存中存储的数据内容QString sendData_3 = str.toUtf8().toHex().toUpper();// Unicode字符集中的"中文"编码,多字节编码,单个中文占3~4个字节QString sendData_4 = str.toLocal8Bit().toHex().toUpper();// GB2312/GBK字符集中的"中文"编码,双字节编码,单个中文占2个字节// 将QString由16进制,转换为原码,且这种方式可以忽略中间的空格QString sendData_5 = QByteArray::fromHex(str.toUtf8().toHex());// 中文正常显示QString sendData_6 = QByteArray::fromHex(str.toLocal8Bit().toHex());// 中文显示乱码// 将GB2312编码转换成unicodeQString sendData_7 = QTextCodec::codecForName("GB2312")->toUnicode(str.toLocal8Bit());// 中文正常显示QString sendData_8 = QTextCodec::codecForName("GB2312")->toUnicode(QByteArray::fromHex(str.toLocal8Bit().toHex()));// 中文正常显示ui->txtSend_1->setText(sendData_1);ui->txtSend_2->setText(sendData_2);ui->txtSend_3->setText(sendData_3);ui->txtSend_4->setText(sendData_4);ui->txtSend_5->setText(sendData_5);ui->txtSend_6->setText(sendData_6);ui->txtSend_7->setText(sendData_7);ui->txtSend_8->setText(sendData_8);
}MainWindow::~MainWindow()
{delete ui;
}
运行结果:
QTextEdit显示中文乱码解决,中文GB2312转Unicode,QString、QByteArray 转换,16进制显示,toUtf8与toLocal8Bit区别相关推荐
- C语言 10进制 以8进制和16进制显示, #处理显示前导符
C语言 10进制 以8进制和16进制显示, #处理显示前导符 #include<stdio.h> void main() {int a=20,b=30;int c=a+b;printf(& ...
- [代码积累]解决HL7协议、TCP/IP通讯、16进制转字符串,中文乱码的问题。
最近在做一个流水线的接口,连接的是日立生化和雅培化学发光.流水线软件提供商提供了基于HL7的通讯协议,其要求发发送完整的病人信息. 之前和迈瑞等一些国产仪器做LIS接口时,他们提供的通讯方案,也是只支 ...
- linux 文件 16进制显示,linux 16进制 产看文件
hexdump - ascii, decimal, hexadecimal, octal dump 查看十六机制的首选工具. -c 每单元以字节为单位,显示出对应的ASCII码 -C 每单元以字节为单 ...
- NotePad++ 将数据以16进制显示,HexEditor插件的安装
解压缩后把HexEditor文件夹复制到安装目录(如C:\Program Files\Notepad++\plugins),退出NotePad++重新打开,插件--插件管理--选中刚刚放进去的插件,点 ...
- C++ 文件读写实战——2进制文件查看器(16进制显示)
简单的二进制阅读器(或者说16进制查看器) 在学习BMP位图的构成时,对网上的收费16进制查看器很是烦躁,notepad查看时卡到放弃人生 因为只是为了初步学习图片知识,以及查看2进制文件内部构成的话 ...
- 火狐浏览器中文乱码怎么办 Firefox中文乱码解决方法
核心提示:最近好多网友反映在使用火狐浏览器的时候,网页显示乱码的情况,这种问题通常是由于我们浏览器语言的设置有关系,下面小编就为大家分析下具体的解决办法,希望对大家有所帮助. 火狐浏览器中文乱码怎么办 ...
- 字符编码转换_进制转换(GB2312,GBK,JNI,HexTOStr)
[cpp] view plain copy print? // /* ASCII 英文一个字节 gb2312,gbk 中文两个字节,英文一个字节 在中文系统中ansi一般指gb2312或gbk GB2 ...
- 利用10位AD转换器 及 LED 数码管,实现由AD转换器采集温度,并用数码管显示。温度超出一定范围,LED 指示灯闪烁报警。(主要分析进制16进制转换10进制,并用数码管显示问题)
** 题目: ** 利用原有的电路 AD 及 LED 数码管显示等例子,进行整合.实现由 AD转换器采集温度(用可调电阻模拟),温度在数码管上显示.当温度超出一定范围,用 LED 指示灯进行闪烁报警. ...
- navicat for mysql 显示中文乱码解决办法
navicat for mysql 显示中文乱码解决办法 最近遇到一个问题,用navicat for mysql 打开数据库时全都显示的是乱码(在用程序代码插入数据之前确保字符不是乱码),遇到问题 ...
最新文章
- 基于人工智能智商研究的智能定律初探
- mysql数据采集中间件_开源 | MySQL数据传输中间件—DTLE
- 机器学习实战-第二章代码+注释-KNN
- bulter机器人_科普!九款使用率最高的物流机器人大盘点!
- 蓝桥杯2020答案c语言b组,2020十月份蓝桥杯B组省赛题解大全(害!附题面文件和部分代码~)...
- C语言islower函数介绍、示例和实现
- eclipse maven打包_自动化管理项目,Maven仓库配置、安装和使用
- 一本通1623Sherlock and His Girlfriend
- python可视化入门 plotly
- Android 签名文件的sha1值查看
- drools-基本使用
- 苹果13可以用无线充电宝吗?苹果专用无线充电宝推荐
- 三合一收款二维码原理以及源码
- STM32F407ZET6音乐播放器
- HTTP认证与https简介
- 【opencv】动态背景下运动目标检测 SURF配准差分
- 区块链世界的流量聚集地
- EAS的WEB开发入门
- 【转】写给欲采访刘丁宁事件的媒体
- 平台业务收款分账产品设计 - 总览