当前位置: 首页 > news >正文

记录一次QT乱码问题

问题描述

在敲陆文周的书《QT5开发及实例》的示例代码时,出现乱码,如下图所示
在这里插入图片描述
具体代码如下

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->treeWidget->clear();int groupSize = 2;int itemSize = 4;for(int i=1;i<=groupSize;i++){QTreeWidgetItem *group = new QTreeWidgetItem(ui->treeWidget);group->setText(0,QString("小组")+QString::number(i));group->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);group->setCheckState(0,Qt::Unchecked);for(int j=1;j<=itemSize;j++){QTreeWidgetItem *subItem = new QTreeWidgetItem(group);subItem->setText(0,QString("项目")+QString::number(i)+QString::number(j));subItem->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);subItem->setCheckState(0,Qt::Unchecked);}}
}

原因分析

在阅读csdn大佬急支糖浆的文章后,理解了 源文件码字符集,执行字符集等概念。

  • 源文件编码字符集:源文件保存时的编码方式,如gbk,utf-8等。
  • 执行字符集:编译器编译后的可执行文件的编码方式。
    本人采用的源文件编码字符集为UTF-8 BOM,编译器为msvc2019,由于源文件编码字符集带BOM,因此,msvc的执行字符集会变为local编码,即GBK(系统为中文系统)。到这里,一切都是正常的。
    罪魁祸首:因为QT中的QString在初始化时会使用QString::fromUTF8将UTF-8编码转为UTF-16编码,由于执行编码为gbk,这里使用fromUTF8是错误的,这便是乱码的原因所在,下图可证明我的观点:
    在这里插入图片描述
    可以看到,使用cout打印出字符串是正确的,因为它不需要像QString那样使用fromUTF8函数进行转码。

解决方案

  • 换成mingw编译器,这样无论源文件编码字符集是否带BOM,mingw都会采用utf8作为执行字符集,这样QString使用fromUTF8函数就能转码成功。
  • 继续使用msvc编译器,但需要加上预编译指令指示编译器采用utf-8作为执行字符集#pragma execution_character_set("utf-8")
  • 继续使用msvc编译器,但是将文件编码方式设置为不带BOM,这样fromUTF8也能正确转码。
    在这里插入图片描述
  • 指示QString使用locale编码来进行转码,但这种方式在高版本的qt中貌似已经失效
 QTextCodec *codec = QTextCodec::codecForName("utf-8");QTextCodec::setCodecForLocale(codec);QTextCodec::setCodecForCStrings(codec);QTextCodec::setCodecForTr(codec);

推荐采用第二种方案解决。

相关文章:

记录一次QT乱码问题

问题描述 在敲陆文周的书《QT5开发及实例》的示例代码时&#xff0c;出现乱码&#xff0c;如下图所示 具体代码如下 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->treeWidget->clear();int groupSize 2;int ite…...

怎么提升搜狗网站排名

在当今数字化时代&#xff0c;网站排名对于品牌、企业以及个人都至关重要。而对于许多网站来说&#xff0c;搜狗搜索引擎是一个重要的流量来源。为了在搜狗上取得更好的排名&#xff0c;不仅需要优化网站内容&#xff0c;还需要巧妙运用一些工具和技巧。在本文中&#xff0c;我…...

搜索经典题——填充 9*9矩阵

题目&#xff1a;给定一个九行九列矩阵&#xff0c;填充矩阵元素&#xff0c;要求&#xff1a; 1、每一行每一列&#xff0c;每个小九宫格&#xff08;图片画粗的地方就是&#xff09;不能包含相同元素 2、每一行&#xff0c;每一列&#xff0c;每个小九宫格均会完整出现1-9的数…...

Vue待办事项(组件,模块化)

//html页面代码 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> <style> * { padding: 0; margin: 0; }…...

Vue中的组件

在应用程序的开发中&#xff0c;组件是不可缺少的。在Vue的使用中&#xff0c;同样也会用到组件。   vue组件的一般知识点&#xff1a;   1、组件的名字唯一&#xff1b;   2、组件以Html形式书写&#xff1b;   3、组件可以复用&#xff1b;   4、组件可以嵌套&…...

svg矢量图标在wpf中的使用

在wpf应用程序开发中&#xff0c;为支持图标的矢量缩放&#xff0c;及在不同分辨率下界面中图标元素的矢量无损缩放&#xff0c;所以常常用到svg图标&#xff0c;那么如果完 美的将svg图标运用到wpf日常的项目开发中呢&#xff0c;这里分享一下我的个人使用经验和详细步骤。 步…...

如何在云端加速缓存构建

缓存是指将某类数据存储起来以便以后重复使用的过程&#xff0c;它的运用在开发场景中非常普遍。类似于你习惯把最常用的调料放在厨房台面上&#xff0c;而不是橱柜里&#xff0c;这样你在准备大餐时就可以轻松取用。 但对于一个更为技术性、更精确的用例&#xff0c;比如像谷…...

JavaWeb-Cookie与Session

一、概念 是否还记得我们在HTTP概念中提到&#xff1a;HTTP的一大特点是无状态&#xff0c;这意味着多次HTTP请求之间是无法共享数据的。而在请求之间共享一些数据又是我们期望达到的效果。&#xff08;例如登录的记住我功能&#xff09;于是便有了会话跟踪技术&#xff0c;而…...

ZABBIX根据IP列表,主机描述,或IP子网批量创建主机的维护任务

有时候被ZABBIX监控的主机可能需要关机重启等维护操作,为了在此期间不触发告警,需要创建主机的维护任务,以免出现误告警 ZABBIX本身有这个API可供调用(不同版本细节略有不同,本次用的ZABBIX6.*),实现批量化建立主机的维护任务 无论哪种方式(IP列表,主机描述,或IP子网)创建维护…...

PMIS_ENT_STD

...

32 登录页组件

效果演示 实现了一个登录页面的样式&#xff0c;包括一个容器、左侧和右侧部分。左侧部分是一个背景图片&#xff0c;右侧部分是一个表单&#xff0c;包括输入框、复选框、按钮和忘记密码链接。整个页面的背景色为白色&#xff0c;容器为一个圆角矩形&#xff0c;表单为一个半透…...

Docker(一)简介和基本概念:什么是 Docker?用它会带来什么样的好处?

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 一、简介 本章将带领你进入 Docker 的世界。 什么是 Docker&#xff1f; 用它会带来什么样的好处&#xff1f; 好吧&#xff0c;让我们带…...

【Linux】进程的概念 进程状态 进程优先级

Content 一、什么是进程1. 进程的概念2. 进程的描述 - 进程控制块&#xff08;PCB&#xff09;3. Linux下的进程 二、进程状态1. 教科书中的进程状态运行状态阻塞状态挂起状态 2. Linux下的进程状态R&#xff08;running&#xff09;- 运行状态S&#xff08;sleeping) - 睡眠状…...

Go语言热重载和优雅地关闭程序

Go语言热重载和优雅地关闭程序 我们有时会因不同的目的去关闭服务&#xff0c;一种关闭服务是终止操作系统&#xff0c;一种关闭服务是用来更新配置。 我们希望优雅地关闭服务和通过热重载重新加载配置&#xff0c;而这两种方式可以通过信号包来完成。 1、代码实现 package…...

Python实现两个列表相加的方法汇总

1. 使用 “” 运算符 通过 “” 运算符将两个列表相加&#xff0c;得到一个新的列表。例如&#xff1a; list1 [1, 2, 3] list2 [4, 5, 6] result list1 list2 print(result) # [1, 2, 3, 4, 5, 6]2. 使用 extend 方法 使用 extend 方法将一个列表中的元素逐个添加到另…...

debian12.4配置

文章目录 debian12.4配置概述笔记将非root用户添加到sudo组更换国内源配置ssh的客户端访问END debian12.4配置 概述 在虚拟机中装了一个debian12.4, 想配置ssh客户端连接, 出了问题. 配置乱了, 还好长了个心眼, 做了快照. 发现2个问题: debian12.4默认安装完, 有ssh, 先检查…...

linux切换root用户su - root和su root的区别

这里说一下login shell和 no login shell的区别 通过tty客户端登陆的shell就是login shell&#xff0c;通过在图形界面使用ctrlshiftt的方式新建的shell是no login shell login shell 主要读取两个配置文件/etc/profile和~/.bash_profile no login shell 读取的文件和顺序为&am…...

SQL Server Management Studio创建数据表

文章目录 一、建表注意事项1.1 数据类型1.2 建立数据表的基本SQL语法 二、实例说明2.1 创建数据表2.2 实例2 三、标识列和主键示例&#xff1a; 一、建表注意事项 1.1 数据类型 可以看这个去了解数据类型&#xff1a; 1.2 建立数据表的基本SQL语法 建立数据表的基本 SQL 语…...

【AI的未来 - AI Agent系列】【MetaGPT】4.1 细说我在ActionNode实战中踩的那些坑

文章目录 1. MetaGPT 0.5.2 版本的坑1.1 坑一&#xff1a;cannot import name "ActionNode" from "metagpt.actions.action"1.2 坑二&#xff1a;simple_fill 没有参数 schema1.3 坑三&#xff1a;ActionNode一直在循环执行&#xff0c; 2. 升级成 MetaGP…...

Android学习(五):常用控件

Android学习&#xff08;五&#xff09;&#xff1a;常用控件 常用控件 TextViewEditTextButtonRadioButtonImageView 1、TextView控件 1.1、简介 TextView是用于显示文字(字符串)的控件&#xff0c;可在代码中通过设置属性改变文字的大小、颜色、样式等功能。 1.2、示例…...

OpenClaw配置备份指南:Qwen3.5-9B环境快速迁移与恢复方法

OpenClaw配置备份指南&#xff1a;Qwen3.5-9B环境快速迁移与恢复方法 1. 为什么需要备份OpenClaw配置&#xff1f; 上周我的主力开发机突然硬盘故障&#xff0c;导致辛苦配置了两个月的OpenClaw环境全部丢失。最痛苦的不是重装软件&#xff0c;而是那些精心调试的模型参数、技…...

OpenClaw定时任务专家:用Qwen3-32B镜像实现凌晨自动备份与报表生成

OpenClaw定时任务专家&#xff1a;用Qwen3-32B镜像实现凌晨自动备份与报表生成 1. 为什么需要定时任务自动化 作为一个经常需要处理数据库和报表的开发者&#xff0c;我发现自己总是在重复同样的工作&#xff1a;每天凌晨备份数据库、生成统计报表、然后发送给相关同事。这种…...

Verilog specify语法实战:如何用5分钟搞定模块路径延时配置(附常见坑点)

Verilog specify语法实战&#xff1a;5分钟掌握模块路径延时配置与避坑指南 在数字电路设计中&#xff0c;精确控制信号传播延迟是确保时序收敛的关键环节。作为硬件描述语言的核心特性之一&#xff0c;Verilog的specify块提供了一种声明式方法来定义模块引脚间的路径延迟&…...

OpenPLC Editor:重塑工业自动化编程的开源方案

OpenPLC Editor&#xff1a;重塑工业自动化编程的开源方案 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 在工业自动化领域&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;编程长期被商业软件垄断&#xff…...

如何快速解锁网易云音乐NCM格式:免费无损转换完整指南

如何快速解锁网易云音乐NCM格式&#xff1a;免费无损转换完整指南 【免费下载链接】ncmdump ncmdump - 网易云音乐NCM转换 项目地址: https://gitcode.com/gh_mirrors/ncmdu/ncmdump 你是否曾经从网易云音乐下载了喜爱的歌曲&#xff0c;却发现这些NCM格式文件无法在其他…...

微信小程序onLaunch异步问题实战:如何确保Page的onLoad在onLaunch完成后执行?

微信小程序异步初始化难题&#xff1a;5种方案确保onLaunch与onLoad的执行顺序 微信小程序的启动流程看似简单&#xff0c;却隐藏着一个让不少开发者踩坑的异步陷阱。当你在app.js的onLaunch中进行网络请求或异步操作时&#xff0c;页面层级的onLoad可能已经迫不及待地开始执行…...

解锁AI创作自由:ComfyUI节点式工作流从入门到精通

解锁AI创作自由&#xff1a;ComfyUI节点式工作流从入门到精通 【免费下载链接】ComfyUI 最强大且模块化的具有图形/节点界面的稳定扩散GUI。 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI 你是否遇到过这样的困境&#xff1a;想要调整AI生成图像的某个细节…...

Labview信号采集与分析系统:基础框架与二次开发的宝藏

Labview 信号采集与分析系统&#xff08;含报告&#xff09; 系统可作自己设计的基础框架&#xff0c;然后在基础上进行二次开发。 系统功能&#xff1a; (1&#xff09;可采集传感器的真实信号&#xff1b; (2&#xff09;可采集 labview 产生的模拟信号&#xff1b; (3&#…...

UABEA资产编辑异常解决方案:从报错到修复的完整技术故障排除指南

UABEA资产编辑异常解决方案&#xff1a;从报错到修复的完整技术故障排除指南 【免费下载链接】UABEA UABEA: 这是一个用于新版本Unity的C# Asset Bundle Extractor&#xff08;资源包提取器&#xff09;&#xff0c;用于提取游戏中的资源。 项目地址: https://gitcode.com/gh…...

电商老板必看:用Excel的IF和VLOOKUP函数,轻松算出你的新老客户利润贡献比

电商精细化运营&#xff1a;用Excel透视新老客户利润贡献的实战指南 对于中小电商企业主来说&#xff0c;理解客户结构是精细化运营的第一步。你可能没有专业的BI工具&#xff0c;但Excel这个看似普通的办公软件&#xff0c;却能帮你挖掘出惊人的商业洞察。本文将带你一步步构建…...