Qt 字符编码转换(UTF-8 转换为 GBK) \u7528\u6237\u672a\u7b7e\u7ea6

QT编码转换研究 分析:在qt creator中,默认编码是utf8,当再使用u8时,实际相当于再u8基础上又进行了一次u8转换 在vs中,默认使用本地编码方式,可以通过头声明将默认编码改成u8 示例1: 示例2: 示例3: 说明:vs默认使用的是gb2312 ... 阅读详情

UTF-8 转换为 GBK \u7528\u6237\u672a\u7b7e\u7ea6

编码知识(\u7528\u6237\等的就是Unicode编码)

Qt常见的两种编码是: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个字节表示。

上面说了 GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换 但是我试了下 utf-8 可以直接转换为 gbk


Qt中 提供了 一个字符串转码的类 QTextCodec

QTextCodec类提供文本编码之间的转换。
Qt使用Unicode存储、绘制和操作字符串。在许多情况下,您可能希望处理使用不同编码的数据。例如,大多数日本文档仍然存储在Shift-JIS或ISO 2022-JP格式,而俄罗斯用户的文档通常存储在KOI8-R或windows 1251格式。
Qt提供了一组QTextCodec类,以帮助将非Unicode格式转换为Unicode格式。您还可以创建自己的编解码器类。
支持的编码是:

Big5
Big5-HKSCS
CP949
EUC-JP
EUC-KR
GB18030
HP-ROMAN8
IBM 850
IBM 866
IBM 874
ISO 2022-JP
ISO 8859-1 to 10
ISO 8859-13 to 16
Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml
KOI8-R
KOI8-U
Macintosh
Shift-JIS
TIS-620
TSCII
UTF-8
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
Windows-1250 to 1258

转换编码示例

我用到的就很简单 utf-8 转为 gbk
如果你原本编码不是 utf-8 就要先转换 utf-8 这里我们假设 原本编码也不是utf-8

#include <QTextCodec>

QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");

设置本地编码,这一步之后类似\u7528\u6237\u672a\u7b7e\u7ea6的unicode编码
就可以直接转了。  QString::fromlocal8bit()即可

QTextCodec::setCodecForLocale(utf8); 设置本地编码

QTextCodec* gbk = QTextCodec::codecForName("gbk");

QString str1="您好";


//utf8 -> gbk
//1. utf8 -> unicode
QString strUnicode= utf8->toUnicode(str1.toLocal8Bit().data()); data返回的是指针,局部变量情况下可用
//2. unicode -> gbk, 得到QByteArray
QByteArray gb_bytes= gbk->fromUnicode(strUnicode);



//gbk -> utf8
//1. gbk to unicode
QByteArray GBK = QByteArray::fromHex("C5A9B7F2C9BDC8AA")  // 返回该十六进制编码数组的已解码副本
QString strUnicode=gbk->toUnicode(GBK);
//2. unicode -> utf-8
QString utf8_bytes=utf8->fromUnicode(strUnicode);


文章来源 - 作者 :janeyjhon1

Python中的代码编码格式转换问题 本文将详细介绍如何进行Python代码编码格式的转换,包括从Unicode到其他编码格式的转换,以及从其他编码格式到Unicode的转换。该方法接受一个字符串参数,指定源编码格式,返回转换后的Unicode字符串。当处理代码时,有时会遇到编码不一致的情况,例如在处理文本文件时,文件的编码格式与当前环境的编码格式不一致。该方法接受一个字符串参数,指定目标编码格式,返回转换后的字节字符串。方法,我们可以方便地在不同编码格式之间进行转换,确保代码在不同环境中的正确执行。转换为UTF-8编码格式的字节字符串。 阅读详情

相关推荐

C#开发者必备:VSPD虚拟串口快速配置指南(附汉化教程)

本文为C#开发者提供了VSPD虚拟串口的快速配置与汉化教程。详细介绍了如何安装、汉化VSPD,并创建稳定的虚拟串口对,重点讲解了如何将其集成到C#开发工作流中,使用SerialPort类进行数据通信测试、协议模拟及故障排查,有效提升硬件通信开发的效率。

weixin_29224529的博客 258

Qt中UTF-8和GBK字符数据之间的相互转换

Qt中UTF-8和GBK字符数据之间的相互转换

qq_27281753的博客 3944

别再为reg2icg的setup违例头疼了!手把手教你用ICC2/Innovus这3招搞定(附实战数据对比)

本文详细介绍了在ICC2/Innovus中解决reg2icg的setup违例的三种高效方法,包括早期时钟树预估、精准控制时钟延迟与门控检查以及ICG专用优化选项组合。通过实战数据对比,展示了不同策略的效果差异,帮助工程师快速优化时序路径,提升芯片性能。

weixin_42569329的博客 408

QT-UTF8,GBK互转

首先需要用到QString的静态成员函数来获取字符数组: QByteArray QString::toLocal8Bit () ;                     //获取字节数组对象 char * QByteArray::data (); //通过字节数组对象的成员data函数,获取char数组 QTextCodec编码类介绍 互转主要用到这个类,通过该类可以获取编码对象,其中常见支持: UTF-8 UTF-16 //默认大端 UTF-16BE //

我不是码农的博客~~~ 3064

如何理解Fourier Neural Operator (FNO)

2022年Nvidia发表在arXiv上的的FourcastNet作为几乎是最早的一篇气象大模型的工作(之前Google Research的MetNet主要还是对于降水的预报)。除了Transformer的backbone之外,使用到了2021年发表在ICLR上的Fourier Neural Operator。为了更好的理解模型的理论基础,可以详细学习一下以及他的前期工作GNOFNO作者对这两篇文章的解析blog。

momo的博客 1万+

Vienna整流器SVPWM调制:7扇区划分与中点电位平衡的MATLAB/Simulink实现解析

本文深入解析Vienna整流器的SVPWM调制技术,重点介绍7扇区划分与中点电位平衡的MATLAB/Simulink实现方法。通过详细的算法推导和仿真模型构建,帮助工程师掌握整流器闭环控制策略,优化功率转换效率。内容涵盖扇区判断逻辑、矢量作用时间计算及中点电位平衡的PID调节等核心技术要点。

weixin_33937499的博客 387

QT UTF-8转GBK编码

在Qt5中使用Unicode来存储、操作字符串,windows下是GBK编码。 UTF-8 转 GBK QString appLink = "有道云笔记.lnk"; appLink = chineseCodec(appLink); //返回与匹配名称最匹配的对象 QTextCodec *utf8 = QTextCodec::codecForName("UTF-8"); QTextCodec *gb...

guorong520的博客 1360

保姆级教程:用达芬奇Configurator配置CAN总线(从DBC导入到Controller设置)

本文详细介绍了使用达芬奇Configurator工具从DBC文件导入到CAN总线控制器设置的全流程配置方法。通过环境准备、CAN控制器模式选择、硬件参数配置、通信参数优化及通信栈集成等关键步骤,帮助开发者高效完成AUTOSAR架构下的CAN总线开发,特别适合汽车电子领域的工程师参考。

weixin_30529023的博客 442

Qt 字符编码转换(UTF-8 转换为 GBK)

字符串编码格式转换 很多时候可能需要字符串编码的转换,最近我需要获取一段字符串的长度,我strlen() 获取的’你好’ 的字节长度为6 ,我记得每个汉字占用2字节 ,查了一下 UTF-8格式 汉字(含繁体)占3字节,需要转下码. 编码知识 Qt常见的两种编码是:UTF-8和GBK UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不...

shenmingyi.blog.youkuaiyun.com 2万+

自学PCB思路 | PCB设计零基础入门-小白适用(附详细入门经验分享)

本人大一在实践课上就听说PCB,被虎的一楞一楞的,不过现在回看,发现其实并没有相信的那么难!想着把自己这一路摸索的学习路线分享一下,当时我是一边摸索一边上手,一把鼻涕一把泪的过来的。如果你想搞硬件或者需要搞硬件,下面是我的入门学习过程,希望可以帮到你。目录前言选择一款设计软件好的入门课程掌握抄板元件采购焊板子烙铁头热风枪自己半设计明确设计需求全设计最后我并非什么大佬,也没法自己去教大家如何画板。

自动化小秋葵的博客 1万+

泰凌微8258入门教程 基础篇①——Bluetooth® SIG Mesh 快速上手

Bluetooth® SIG Mesh Quick Start

6730

QT utf8编码与gbk编码的相互转换

说明: 有一个打印机,只支持gdk编码, 而我的程序是linux, utf8是本地编码. 我需要一个简单的utf8向gdk转换的程序. 网上大多不能直接使用, 下面附上自己整理和测试的代码. 花了我不少时间, QT 环境. 代码解读: utf8 与 gdk 不能直接进行转换,而需要借助于unicode来进行变换. utf8向gdk转换的过程是utf8->unicode, unicode->gdk. 第一步变换需要utf8 QTextCodec, 第二步变换需要gdk QTextCodec,

煮酒Shae 1497

Android 人像分割实战:OpenCV+YOLOv8+NCNN 三库联动(附 GPU 加速 / 内存优化全方案)

本文详细介绍了在Android项目中集成OpenCV+YOLOv8+NCNN实现实时人像分割的技术方案。主要内容包括:项目环境搭建(配置NDK、添加Native模块)、核心库文件集成(OpenCV、NCNN、YOLOv8模型)、JNI接口设计与实现(Kotlin层调用C++算法)。通过Camera API获取图像数据,使用YOLOv8进行人体检测,结合NCNN高性能推理框架实现人像分割处理,最终将原始画面与分割结果(背景透明)同时显示在Android界面上。该项目采用多技术栈协同工作,OpenCV负责图像处

FJN110的博客 234

Windows平台Qt6中UTF8与GBK文本编码互相转换、理解文本编码本质

Qt C++ UTF8与GBK文本编码互相转换

欢迎你来 4866

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

QTQString(UTF8)数据转GBK

QTQString(UTF8)数据转GBK

weixin_44545509的博客 4660

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

QT Utf-8 转 GBK

QTextCodec *gbk = QTextCodec::codecForName("gb18030"); QTextCodec *utf8 = QTextCodec::codecForName("utf-8"); QTextCodec::setCodecForTr(gbk); QTextCodec::setCodecForLocale(gbk); // QString utfStr =

ACanoe的专栏 8446

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Qt读取xml中UTF-8中文转GBK QString

【代码】Qt读取xml中UTF-8中文转GBK QString。

zanglengyu的专栏 576

Qt | QTextCodec类使用详解、GBK和UTF8编码互转、QString的toLocal8bit和toLatin1区别

Qt使用Unicode来存储、绘制和操作字符串。unicode是各个编码格式转换的媒介,以UTF-8转到GBK格式为例,需要先将UTF-8转到UNICODE,在通过unicode转到GBK,反之亦然。Qt提供了一组QTextCodec类,以帮助将非Unicode格式转换为Unicode格式。您还可以创建自己的编解码器类。

^_^ 1万+

关于qt中文utf-8转gbk

笔者经历了糟心的两天时间,说多了都是泪,希大家有所帮助,不再同一个地方浪费时间。 笔者的任务:从数据库获取utf-8编码的含中文的字符串,并在Linux平台使用qt显示在表格中。 笔者所遇问题:中文始终为乱码,度娘上mian函数加类似下面的函数也并没用 QTextCodec *codec = QTextCodec::codecForName(“GBK”); QTextCodec::setCodec...

duzhui2270的博客 1845

QT之UTF-8和GBK之间的相互转换

QT中UTF-8和GBK之间的相互转换 #include <QTextCodec> //UTF-8转GBK QByteArray LS_Unpack::utf8_To_gbk(QByteArray str){ QTextCodec *utf8 = QTextCodec::codecForName("UTF-8"); QTextCodec* gbk = QTextCodec::codecForName("gbk"); QString strUnicode= utf8-&g

weixin_48465965的博客 902

qt字符编码及数据格式转换

qt字符编码与数据转换整理,方便开发过程中直接使用,提升效率

linyibin_123的博客 6690

UTF-8编码下\u7528\u6237转换为中文汉字

有过多次,在开发项目中遇见设置文件编码格式为UTF-8,但是打开该文件出现类似\u7528这样的数据,看也看不懂,也不是平常见到的乱码。这里的\u7528类似的数据,其中'\u'表示UNICODE编码,其实数据就是对应的UTF-8下的汉字。

niaonao 11万+

qt utf8编码与gbk编码转换

#include &lt;stdio.h&gt;  #include &lt;string.h&gt;  #include &lt;QString&gt;  #include &lt;QTextCodec&gt;    void printContent(char *p)  int main()  {      QTextCodec *utf8 = QTextCodec::codecForName...

qq_38446366的博客 2132

QT常用编码转换

【代码】QT常用编码转换。

vip_member888的博客 1198

(转载)Qt 中GBK和UTF8的转换

#include <QTextCodec> inline QString GBK2UTF8(const QString &inStr) { QTextCodec *gbk = QTextCodec::codecForName("GB18030"); QTextCodec *utf8 = QTextCodec::codecForName("UTF-8"); QSt...

乌托邦 5877

Qt字符串编码如何处理

Qt字符串编码如何处理

m0_73443478的博客 1119
上一篇: Ubuntu 18.04安装QtMqtt模块、低于QT5.0有其他mqtt sdk库
下一篇: QT QByteArray的十进制与十六进制(字符型) 互相转换 -串口编程
温柔大猩猩
博客等级 码龄7年 65粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值