Qt4.8编码转换之GBK2UTF8

Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值 文章目录前言简述ASCIIGBKUnicodeUTF-8应用场景开发环境编码转换16进制数值转换为16进制字符16进制数值转化为字符串16进制字符串转换为Unicode字符串Unicode字符串转化为16进制字符串总结参考资料 前言 字符编码方式多种多样,往往不同的应用、不同的设备、不同的系统上使用的字符编码不同,因此想要设计鲁棒性强的软件,就必须掌握对字符编码的转化机制和具体实现,特别是在Qt这... 阅读详情

Qt4.8编码转换之GBK2UTF8

在项目中难免遇到编码转换的问题,一般我的开发项目中,代码的编码格式都是GBK,但是在其他平台上可能用的编码方式为UTF8,这时候编码转化就成为一个问题了。在之前的开发方式中老是遇到这种情况,在本机编译的代码,在本机运行oK,但是在其他机器上编译时却无法正确的进行编码转换?这是什么原因呢,原来在Qt中,会去寻找系统字符集编码库,如果我们设置了QTextCodec为GB18030字符集,在开发机运行环境中,一般都可以运行,但是在其他设备上,有时却无法获取?因为在其他设备上可能没有GB18030字符集,这时候就有可能导致无法转换相应的编码了。

解决方案

在Qt的源码中其实已经提供了中文编码的转换功能,只不过这部分代码是属于plguin方式存在的,
并没有并到主干代码里,在QT5.0版本之后可以直接使用GB18030格式,但是在Qt4.8中,这部分功能需要另外添加支持。

HOW TO

  1. 拷贝两个文件到你的工程目录,
    C:\Qt\4.8.6\src\plugins\codecs\cn\qgb18030codec.h
    C:\Qt\4.8.6\src\plugins\codecs\cn\qgb18030codec.cpp
  2. 添加文件到你的工程目录
    在你的代码里添加头文件qgb18030codec.h

3. 实现你的转换功能函数



    QString ByteToString( QByteArray data)
    {
        QGb18030Codec *code = new QGb18030Codec();
        QString str =  code->convertToUnicode( data.data(), data.length(), 0 );
        delete code;
        return str;
    }


    QByteArray StringToByte( QString data )
    {
        QGb18030Codec *code = new QGb18030Codec();
        QByteArray byte =  code->convertFromUnicode( data.data(), data.length(), 0 );
        delete code;
        return byte;
    }

// 当然别忘了在main.cpp里加上这部分代码
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));    

这样就实现了。

Qt | 深入解析QTextCodec编码转换实战:从GBK到UTF-8的跨平台解决方案 本文深入解析Qt框架中QTextCodec类的编码转换实战,重点解决GBK与UTF-8编码在跨平台开发中的乱码问题。文章详细阐述了QTextCodec的核心解码与编码机制,提供了从GBK到UTF-8互转的完整代码示例,并系统分析了Windows与Linux/macOS乱码根源,最终给出了一劳永逸的跨平台编码处理策略与进阶调试技巧。 阅读详情

相关推荐

gbk2utf8:将文件从gbk编码转换为utf-8或重命名包含Java源代码和任何类型配置文件的包-java source code

将文件编码从GBK转换为UTF8 怎么跑 适用于任何平台 java -jar gbk2utf8-0.1.1-SNAPSHOT-all.jar $src-gbk-path $dst-utf8-path 需要帮助,请运行java -jar gbk2utf8-0.1.1-SNAPSHOT-all.jar 笔记 上提供了预编译的软件包,您可以转到此页面直接下载。 适用于Mac平台(64位) 下载 双击并安装 运行命令 $ gbk2utf8 # converting from gbk2 to utf8 Usage: Gbk2Utf8 <src> <dst> [include-extension (default 'java')] $ gbk2utf8 convert Usage: Gbk2Utf8 <src> <dst-u

GBK与UTF-8之间的转换

GBK与UTF-8之间的转换  2012-03-02 21:53:46|  分类: Java |  标签: |字号大中小 订阅 在很多论 坛、网上经常有网友问“ 为什么我使用 new String(tmp.getBytes("ISO-8859-1"), "UTF-8") 或者 new String(tmp.getBytes("ISO-8859-1"), "G

shendeguang的专栏 6606

【信息学奥赛一本通】1215:迷宫(bfs版)

同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。每组测试数据的第1行是一个正整数n(1≤n≤100),表示迷宫的规模是n×n的。接下来是一个n×n的矩阵,矩阵中的元素为‘再接下来一行是4个整数ha,la,hb,lb,描述A处在第ha行, 第la列,B处在第hb行, 第lb列。一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n×n的格点组成,每个格点只有2种状态,.

chu_xiaojie的博客 944

gbk2utf8 项目使用教程

gbk2utf8 项目使用教程 1. 项目介绍 gbk2utf8 是一个用于将 GBK 编码的文件批量转换为 UTF-8 编码的工具。该项目旨在解决在开发过程中,由于不同编码格式导致的文件乱码问题。通过该工具,用户可以轻松地将大量 GBK 编码的文件转换为 UTF-8 编码,从而避免在不同工具或平台之间打开文件时出现乱码。 2. 项目快速启动 2.1 安装依赖 在使用 gbk2utf8 之前,请确...

gitblog_00390的博客 514

硬件工程师入门进阶,一文搞懂,看这篇就对了

每家公司的datasheet都有严格的规范,及独特的风格,有时候还会穿插一些原理性的介绍,比如ADI公司的一些ADC/DAC器件资料里面,还会包含AD/DA转换的原理性讲解内容,Datasheet既可以是我们设计上的好帮手,也是学习的好资料。在出货量大的产品中,尽量减少物料种类,比如开头说的,1%的电阻不得不用,那么5%的替换成1%的,物料种类就减少一种,量就大了,能不能争取更优的价格呢?如果说前面学的是内功,那这一关,是招式、是工具的使用,原理图和PCB设计都有对应的工具,教程也很多,且比较容易上手。

一路带飞的博客 5万+

使用trae自动生成前后端分离的web应用程序

使用ai自动生成前后端分离的web应用程序

一介书生 2525

UTF-8、GB2312、GBK编码格式详解和编码示例

UTF-8、GB2312、GBK编码格式详解 参考文章 UTF-8 使用1~4个字节对每个字符进行编码 128个ASCII字符字需要一个字节编码 带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要两个字节进行编码 其他基本多文种平面中的字符(这包含了大部分常用字,如大部分的汉字)使用三个字节编码 其他极少使用的Unicode辅助平面的字符使用四至六...

weixin_30296405的博客 1221

完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

本文以博主本人报考jun dui文职,从报考、备考、考试、查成绩到资格审查、面试,全程亲身经历,给想要报考该内容的朋友们一些小的参考。祝你顺利上岸!完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 247

认识GBK编码和UTF-8编码(C++和Qt字符编码转换)

认识GBK编码和UTF-8编码

bigger_belief的博客 1万+

论文阅读:arxiv 2023 EduChat: A Large-Scale Language Model-based Chatbot System for Intelligent Education

EduChat是一个基于大规模语言模型(LLM)的教育领域聊天机器人系统,旨在为教师、学生和家长提供个性化、公平且富有同理心的智能教育服务。该系统通过在教育语料库上进行预训练和特定任务微调,强化了开放式问答、作文评估、苏格拉底式教学和情感支持等教育功能。为解决领域知识不足和知识更新问题,EduChat采用了检索增强技术,并融入心理学和教育学理论。该项目已开源,提供代码、数据和模型参数,推动LLM在智能教育中的应用发展。

CSPhD-winston的博客 1039

NLTK中WordNet与同义词处理

通过本教程,学习了如何使用NLTK中的WordNet进行自然语言处理任务。首先介绍了WordNet的基本概念及其在NLTK中的集成使用,接着讲解了如何查找同义词、反义词等词汇关系,并结合实际应用演示了语义相似性计算。这些技能在文本分析、情感分析、信息检索等场景中有广泛应用,可以帮助开发者构建更智能的自然语言处理系统。掌握这些基本操作后,可以进一步探索WordNet的其他高级功能,结合其他NLTK工具进行更复杂的语言分析。

Mr数据杨 472

QString格式化字符串转换

1 首先说下字符集。 gb18030字符集兼容了gbk字符集,以两个字节表示一个文字。windows系统可能使用的就是这两种的一种。 unicode字符集以2个或以上的字节表示一个汉字。 通用字符集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。UCS-2用两个字节编码,UCS-4用4个字节编码。 utf8字符集以2个或以上的字节表示一个汉字。实际上具体的数值和unicode有很大的相关性。 ISO-88

Lee notes 1212

Camera HAL Camx — DRQ总结

Camera HAL — DRQ(延迟请求队列)总结 DRQ是CAMX核心层的依赖驱动延迟执行调度器,解决Node处理请求时依赖未就绪的问题。其主要特点包括: 核心功能:当Node处理请求时缺少必要输入(property/metadata/fence),DRQ将其挂起并在依赖满足后重新调度,避免阻塞流水线或丢帧。 系统架构:Session持有主DRQ实例,管理该Session下所有Pipeline Node的依赖;CHI context另有独立DRQ实例专门处理Chi fence同步。 关键数据结构: De

DU_YULIN的博客 75

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

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

^_^ 1万+

NVIDIA Isaac ROS - 入门教程(一)

欢迎访问 Isaac ROS,这是一套硬件加速、高性能、低延迟的 ROS 2 软件包,用于制造自主机器人,充分利用 Jetson 和其他英伟达平台的强大功能。英伟达 Jetson 平台运行在基于 Ubuntu Linux 的 JetPack 操作系统上。JetPack 5.x 是在 Ubuntu 20.04 Focal 的基础上构建的,这意味着由 ROS 2 Buildfarm 为 Ubuntu 22.04 Jammy 构建的 ROS 2 Humble 的 Debian 包不受支持。由于官方 ROS 2 B

机器人控制与仿真应用 5721

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

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

欢迎你来 4866

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

煮酒Shae 1497

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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万+

qt 下 utf8编码与gbk编码的相互转换

微信公众号:fensnote /* author: hjjdebug date: 2017年 09月 01日 星期五 22:35:38 CST 说明: 有一个打印机,只支持gdk编码, 而我的程序是linux, utf8是本地编码. 我需要一个简单的utf8向gdk转换的程序. 网上大多不能直接使用, 下面附上自己整理和测试的代码. 花了我不少时间, QT 环境. 代码解读: utf8 与 gdk 不能直接进行转换,而需要借助于unicode来进行变换. utf8向gdk转换的过程是utf8->.

风声的专栏 1128

彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)

尊重作者,支持原创,如需转载,请附上原地址:https://blog.csdn.net/libaineu2004/article/details/19245205 一、Qt Creator环境设置 1、cpp或h文件从window上传到Ubuntu后会显示乱码,原因是因为ubuntu环境设置默认是utf-8,Windows默认都是GBK. 我们使用的Windows系统本地字符集编码为GBK。 2、Windows环境下,Qt Creator,菜单->工具->选项->文本编辑器-&

qq_41607336的博客 1万+

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

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

乌托邦 5877

GBK,UTF8等编码的中文转换预览

使用工具:qt库函数

natural_Caduceus 2132

Qt GBK编码与UTF-8编码格式转换

用QString的时候往往会出现默认转化的问题。也就是得到的数据已经是变成了UTF8编码,但是它的内容是GBK编码的问题。 也就是说如果GBK编码得到的数据是 0x11 0x22 放入QString的时候会变成 \u0011 和 \u0022这时候已经是UTF8编码了。为了解决这个问题,就引入QByteArray,QBytearray不会默认的帮你转换编码 该是多少就是多少 下面是我写的GBK编码和UTF-8编码互相转换的函数。返回值是QString,可以看着来改 inline QString GBK2UT

cja974182468的博客 7315

Qt QNetwork请求GBK编码网页 转为UTF8

用QNetwork写了一个获取get请求的方法,如下 QString getHtml(const QString &strUrl){ const QUrl url = QUrl::fromUserInput(strUrl); QNetworkRequest request(url); QNetworkAccessManager * manager = new QN...

阿额火热的博客 1089

【QT小记】QT中QString与常用字符编码转换

记录在使用QString的过程中与常用字符编码的转换方法以及乱码的可能原因和解决方法。

林柒Sevenlin随记 6176
上一篇: 使用git对内核version的影响
下一篇: Linux 标准输入struct input_event使用示例
西格蒙
博客等级 码龄14年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值