QT4-QT5升级(4)GBK-UTF-8-乱码-QT工程构建的区别

文件编码为UTF-8
QString 正常
char*    中文乱码

解决方法:

 

#include <iostream>
#include <QString>
#include <QTextCodec>

int main()
{
    QString qstr = "你好,世界!"; // 中文字符串
    
    // 获取 GBK 编码的 QTextCodec
    QTextCodec *codec = QTextCodec::codecForName("GBK");
    
    // 将 QString 转换为 GBK 编码的 QByteArray
    QByteArray gbkData = codec->fromUnicode(qstr);
    
    // 使用 constData() 方法获取 const char* 指针
    const char* charData = gbkData.constData();
    
    std::cout << "Converted const char* (GBK): " << charData << std::endl;

    return 0;
}

QString转const char* GBK编码
实现上述功能有2种方法:
1.直接用转换:无异常

2.用函数封装,debug会出现"字符串无效"

函数封装:QString转const char* GBK编码
Q2C_GBK
QString          都是正常编码
const char*
debug 时显示无法

 #include <QTextCodec>
//编码文件:      UTF-8      
//字符格式转换: 输入QString  
//输出: const char*  
//debug 时显示"字符串无效"
const char* Q2C_GBK(QString qstr)
{
	QTextCodec* codec = QTextCodec::codecForName("GBK");
	QByteArray gbkData = codec->fromUnicode(qstr);// 将 QString 转换为 GBK 编码的 QByteArray
	//const char* charData = gbkData.constData();
	return gbkData.constData();

}

QString qstr0 = "操作配置";
	QTextCodec* codec0 = QTextCodec::codecForName("GBK");	
	QByteArray gbkData0 = codec0->fromUnicode(qstr0);// 将 QString 转换为 GBK 编码的 QByteArray
	const char* charData0 = gbkData0.constData();// 使用 constData() 方法获取 const char* 指针*/

	QString qstr = "自动保存文件间隔";
	QTextCodec* codec = QTextCodec::codecForName("GBK");
	QByteArray gbkData = codec->fromUnicode(qstr);// 将 QString 转换为 GBK 编码的 QByteArray
	const char* charData = gbkData.constData();// 使用 constData() 方法获取 const char* 指针*/
	m_btw = proFile.getInt(charData0, charData, 1);

	QString qstr1 = "操作配置";
	const char* charData1 = Q2C_GBK(qstr1);
	QString qstr2 = "每日note";
	const char* charData2 = Q2C_GBK(qstr2);//只要用函数
	m_btw = proFile.getInt(Q2C_GBK(qstr1), Q2C_GBK(qstr2), 1);
	m_btw = proFile.getInt(charData1, charData2, 1);





 

QT工程构建的区别
 

构建方式:
用到QT库在VS里有2种构建方式
一种属性配置法:属性->配置
一种QT转换法:Qt ->convert
1.属性配置法:
1.VC++目录


2.

3.


把所有库载进去编译通过

2.QT转换法:


实际工程中用哪种要自己试。
我在转换时就出现了如下的问题:
sacnet用QT转换法会出现:

sacnet用配置法就不会出现:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/729061.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据链路层【Linux网络复习版】

目录 一、数据链路层主要解决的是什么问题&#xff1f; 二、什么是以太网&#xff1f; 三、什么是MAC地址&#xff1f; 四、以太网帧的格式是什么&#xff1f; 五、 什么是MTU&#xff1f; 六、MTU和分片 MTU对IP协议的影响&#xff1f; 如何分片&#xff1f; 如何组装&a…

应用篇| 深入浅出LLM应用之RAG

相信很多人都使用过LLM大模型&#xff0c;但是现有大模型或多或少都有以下问题&#xff1a; LLM幻觉问题&#xff1a;从《【小白入门篇1】GPT到底是怎样练成&#xff1f;》我们知道虽然大模型现在能力很强,但是本质就是在做文字接龙,而且每次接龙都具有随机性, 导致模型有时候…

追求零缺陷?找六西格玛培训公司,轻松搞定!

在瞬息万变的商业环境中&#xff0c;企业面临着巨大的挑战和激烈的竞争。为了保持领先地位&#xff0c;企业必须不断寻求优化流程、提高效率、提升质量&#xff0c;并降低成本和风险。在这样的背景下&#xff0c;六西格玛培训公司应运而生&#xff0c;成为企业追求卓越、实现持…

LearnOpenGL - Android OpenGL ES 3.0 绘制纹理

系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好&#xff0c;窗口LearnOpenGL 笔记 - 入门 04 你好&#xff0c;三角形OpenGL - 如何理解 VAO 与 VBO 之间的关系LearnOpenGL - Android OpenGL ES 3.0 绘制…

ATA-4051C高压功率放大器在压电电机中的作用是什么

压电电机是一种特殊的电机&#xff0c;其工作原理基于压电效应&#xff0c;这是一种将电能转化为机械振动的现象。压电电机通常用于精密定位、振动控制和声波生成等应用。为了驱动和控制压电电机&#xff0c;需要高压功率放大器。下面将介绍高压功率放大器在压电电机中的作用&a…

外贸SEO工具有哪些推荐?

"我们作为一个专业的Google SEO团队&#xff0c;比较推荐一下几个适合外贸SEO的工具。Ahrefs 是一个非常强大的工具&#xff0c;可以帮助你深入分析竞争对手的表现&#xff0c;找到有潜力的关键词&#xff0c;还可以监控你的网站链接状况。另外&#xff0c;SEMrush 也很不…

ubuntu访问windows共享文件夹

方法: Ubuntu访问Windows共享文件夹的方法-CSDN博客 基于交换机的PC端网络通信_服务器交换机pc端-CSDN博客 补充说明&#xff1a; 在这里面输入&#xff1a; smb://192.168.0.30/WindowsShareToLinux

NGINX_二十 nginx 监控

二十 nginx 监控 1 nginx的基础监控 进程监控端口监控 注意&#xff1a; 这两个是必须要加在zabbix监控&#xff0c;加触发器有问题及时告警。 web 服务器 nginx 以其高性能与抗并发能力越来越多的被用户使用 作为一款服务器产品&#xff0c;其运行状态是运维密切关注的&a…

解决IDEA使用卡顿的问题,设置JVM内存大小和清理缓存

解决IntelliJ IDEA中卡顿问题&#xff0c;可以尝试以下几个常见且有效的步骤&#xff1a; 1 增加IDEA的JVM内存分配&#xff1a; 位于IDEA安装目录的bin文件夹下&#xff0c;找到对应的操作系统配置文件&#xff08;idea64.exe.vmoptions&#xff08;Windows&#xff09;或id…

数学建模理论学习:线性规划模型

三要素&#xff1a;目标函数、约束条件&#xff08;s.t.&#xff09;、决策变量&#xff08;x&#xff09; 目标函数&#xff1a;z ax1 bx2 cx3 ... 其中c为一个序列&#xff0c;从左到右依次从x1到xn的系数 解决下面的线性规划问题&#xff1a; % 目标函数系数&#xf…

信息打点web篇----web后端源码专项收集

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 专栏描述&#xff1a;因为第一遍过信息收集的时候&#xff0c;没怎么把收集做回事 导致后来在实战中&#xff0c;遭遇资产获取少&#xff0c;可渗透点少的痛苦&#xff0c;如今决定 从头来过&#xff0c;全面全方位…

AI创作在论文写作中扮演什么角色?

近年来&#xff0c;随着科技的快速发展&#xff0c;AI已经逐渐渗透到了生活中的方方面面&#xff0c;其中也包含着学术领域。 作为学生党&#xff0c;你是否还在为期末论文&#xff0c;大学生实践报告而发愁&#xff1f; 有了这些AI写作神器&#xff0c;大学生们再也不用在期…

实验一:Ubuntu系统中的USB设备绑定实验

实验一&#xff1a;Ubuntu系统中的USB设备绑定实验 一、实验目的二、实验原理三、实验环境四、实验步骤任务 1&#xff1a;绑定不同USB设备任务 2&#xff1a;绑定多个相同设ID的串口设备 五、注意事项六、拓展练习 一、实验目的 学习Ubuntu中USB设备命名方法&#xff1b;掌握…

北航数据结构与程序设计图部分选填题

一、 抓两个关键信息&#xff1a;无向图&#xff0c;邻接表。无向图中&#xff0c;边&#xff08;vi&#xff0c;vj&#xff09;要在vi的链表中记录一次&#xff0c;再以&#xff08;vj&#xff0c;vi&#xff09;的形式在vj的链表中记录一次。 每个边都要记录两次&#xff0c…

Ubuntu安装qemu-guest-agent

系列文章目录 Ubuntu-24.04-live-server-amd64安装界面中文版 Ubuntu-24.04-live-server-amd64启用ssh Ubuntu乌班图安装VIM文本编辑器工具 文章目录 系列文章目录前言一、安装二、启用服务三、效果总结 前言 QEMU Guest Agent&#xff08;简称QEMU GA或QGA&#xff09;在虚拟…

基于 Arm 虚拟硬件的心电图(ECG)疾病分类应用开发实战

基于 Arm 虚拟硬件的心电图(ECG)疾病分类应用开发实战 目录 文章目录 [toc] 一、实验背景1. 嵌入式软件开发的基本流程2. Arm 虚拟硬件镜像产品简介 二、实验目标三、实验步骤简介四、实验前准备1. 订阅使用 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例1.1 百度智能云账号准…

Ubuntu 安装 CloudCompare

步骤&#xff1a; sudo apt install flatpakflatpak install flathub org.cloudcompare.CloudCompare此时会有报错&#xff1a; error: No remote refs found similar to ‘flathub’执行 flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.fla…

[深度学习]--分类问题的排查错误的流程

原因复现&#xff1a; 原生的.pt 好使&#xff0c; 转化后的 CoreML不好使&#xff0c; 分类有问题。 yolov8 格式的支持情况 Format Argument Suffix CPU GPU 0 PyTorch - .pt True True 1 Tor…

STM32多种开发环境及生成hex及bin文件介绍

一.STM32开发环境 KEIL系列 &#xff08;1&#xff09;KEIL公司目前有四款独立的嵌入式软件开发工具&#xff0c;即MDK、KEIL C51、KEIL C166、KEIL C251&#xff0c;它们都是KEIL公司品牌下的产品&#xff0c;都基于uVision集成开发环境&#xff0c;其中MDK是RealView系列中…

初阶 《数组》 3. 数组越界

3. 数组越界 数组的下标是有范围限制的。 数组的下规定是从0开始的&#xff0c;如果数组有n个元素&#xff0c;最后一个元素的下标就是n-1。 所以数组的下标如果小于0&#xff0c;或者大于n-1&#xff0c;就是数组越界访问了&#xff0c;超出了数组合法空间的访问。 C语言本身…