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区别相关推荐

  1. C语言 10进制 以8进制和16进制显示, #处理显示前导符

    C语言 10进制 以8进制和16进制显示, #处理显示前导符 #include<stdio.h> void main() {int a=20,b=30;int c=a+b;printf(& ...

  2. [代码积累]解决HL7协议、TCP/IP通讯、16进制转字符串,中文乱码的问题。

    最近在做一个流水线的接口,连接的是日立生化和雅培化学发光.流水线软件提供商提供了基于HL7的通讯协议,其要求发发送完整的病人信息. 之前和迈瑞等一些国产仪器做LIS接口时,他们提供的通讯方案,也是只支 ...

  3. linux 文件 16进制显示,linux 16进制 产看文件

    hexdump - ascii, decimal, hexadecimal, octal dump 查看十六机制的首选工具. -c 每单元以字节为单位,显示出对应的ASCII码 -C 每单元以字节为单 ...

  4. NotePad++ 将数据以16进制显示,HexEditor插件的安装

    解压缩后把HexEditor文件夹复制到安装目录(如C:\Program Files\Notepad++\plugins),退出NotePad++重新打开,插件--插件管理--选中刚刚放进去的插件,点 ...

  5. C++ 文件读写实战——2进制文件查看器(16进制显示)

    简单的二进制阅读器(或者说16进制查看器) 在学习BMP位图的构成时,对网上的收费16进制查看器很是烦躁,notepad查看时卡到放弃人生 因为只是为了初步学习图片知识,以及查看2进制文件内部构成的话 ...

  6. 火狐浏览器中文乱码怎么办 Firefox中文乱码解决方法

    核心提示:最近好多网友反映在使用火狐浏览器的时候,网页显示乱码的情况,这种问题通常是由于我们浏览器语言的设置有关系,下面小编就为大家分析下具体的解决办法,希望对大家有所帮助. 火狐浏览器中文乱码怎么办 ...

  7. 字符编码转换_进制转换(GB2312,GBK,JNI,HexTOStr)

    [cpp] view plain copy print? // /* ASCII 英文一个字节 gb2312,gbk 中文两个字节,英文一个字节 在中文系统中ansi一般指gb2312或gbk GB2 ...

  8. 利用10位AD转换器 及 LED 数码管,实现由AD转换器采集温度,并用数码管显示。温度超出一定范围,LED 指示灯闪烁报警。(主要分析进制16进制转换10进制,并用数码管显示问题)

    ** 题目: ** 利用原有的电路 AD 及 LED 数码管显示等例子,进行整合.实现由 AD转换器采集温度(用可调电阻模拟),温度在数码管上显示.当温度超出一定范围,用 LED 指示灯进行闪烁报警. ...

  9. navicat for mysql 显示中文乱码解决办法

    navicat for mysql 显示中文乱码解决办法   最近遇到一个问题,用navicat for mysql 打开数据库时全都显示的是乱码(在用程序代码插入数据之前确保字符不是乱码),遇到问题 ...

最新文章

  1. 基于人工智能智商研究的智能定律初探
  2. mysql数据采集中间件_开源 | MySQL数据传输中间件—DTLE
  3. 机器学习实战-第二章代码+注释-KNN
  4. bulter机器人_科普!九款使用率最高的物流机器人大盘点!
  5. 蓝桥杯2020答案c语言b组,2020十月份蓝桥杯B组省赛题解大全(害!附题面文件和部分代码~)...
  6. C语言islower函数介绍、示例和实现
  7. eclipse maven打包_自动化管理项目,Maven仓库配置、安装和使用
  8. 一本通1623Sherlock and His Girlfriend
  9. python可视化入门 plotly
  10. Android 签名文件的sha1值查看
  11. drools-基本使用
  12. 苹果13可以用无线充电宝吗?苹果专用无线充电宝推荐
  13. 三合一收款二维码原理以及源码
  14. STM32F407ZET6音乐播放器
  15. HTTP认证与https简介
  16. 【opencv】动态背景下运动目标检测 SURF配准差分
  17. 区块链世界的流量聚集地
  18. EAS的WEB开发入门
  19. 【转】写给欲采访刘丁宁事件的媒体
  20. 平台业务收款分账产品设计 - 总览

热门文章

  1. js 判断iframe是否加载完毕
  2. 18000 Two String 暴力。——— 读题
  3. 1054. The Dominant Color (20)
  4. 【PyQt】分析承载界面
  5. Poj 1936,3302 Subsequence(LCS)
  6. Nuget官方包源问题
  7. ASP.NET Cache缓存管理基于web的缓存
  8. HDU 2686 多线程DP
  9. 数据结构与算法读书笔记2----C# 选择排序
  10. 【网络信息安全】密码学入门笔记