Visual Studio 2022 - QT 环境中文字符乱码问题

Visual Studio 2022 - QT 环境中文字符乱码问题

一、Visual Studio 2022 - Qt 环境

在 QT 中使用中文字符串常会出现乱码现象,如下:以下提供了几个解决方法,仅供参考

QString str = "百香果真是一直可爱的小猫咪";
qDebug() << str << Qt::endl;//"?????????????????Сè??" 输出为乱码

  出现这种问题主要是因为QT Creator 5 及其之后的默认编码方式为 UTF-8,所以 QString 默认认为字符串都是 UTF-8 格式,如果字符串不是 UTF-8 格式,QString 在转码为内部 Unicode 编码方式时就会出现乱码的现象
  其实最好的解决方法就是将编码格式转变为 UTF-8,当然也要根据实际情况随机应变,下面提供方法仅供参考

方法一:高级保存选项切换当前文件编码格式为 UTF-8

  选中需要高级保存的文档 -> 菜单栏选择文件 -> 选择高级保存选项 -> 然后选择正确的编码方式即可; VS 2022 这里默认是使用 GB2312 编码方式,所以只需要将编码方式改为 UTF-8 即可。(VS 2022 如何添加高级保存选项)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  当我们修改完编码方式为 UTF-8,字符串的默认编码方式就是 UTF-8,而不是 GB2312,所以 QString 在转码的时候就会正常转码,不会出现乱码的现象。
在这里插入图片描述

方法二:使用 #pragma execution_character_set(“utf-8”) (VS2025 之后过期)将文件编码格式改为 UTF-8

  *指定用于字符串和字符文本的执行字符集,但是该编译指令在 VS 2015 之后就过期了,这里只做记录 *

方法三:使用 QStringLiteral 宏 和 fromLocal8Bit 方法

  Qt Creator 一般来说默认是使用 UTF-8 编码,而 QStringLiteral 宏可以将字符串转换成 Qt 适配的 UTF-8 编码。

//Visual Studio 2022 - Qt 环境
QString str = "百香果真是一直可爱的小猫咪";
qDebug() << str << Qt::endl;//"?????????????????Сè??" 输出为乱码
//这里使用 QStringLiteral 将字符串转换为 UTF-8 编码格式
str = QStringLiteral("百香果真是一直可爱的小猫咪");
qDebug() << str << Qt::endl;//"\u0019ù\u0015\n???\u0004è\u001F" 输出仍然为乱码

  上面代码中我一开始将直接输出字符串,未进行任何处理,输出为乱码,然后我使用 QStringLiteral 宏将字符串转换为 UTF-8 编码格式,输出仍然为乱码,这个时候就需要考虑 VS 2022 当前的编码格式是否为 UTF-8 了,如果不是,可能使用 QStringLiteral 也会出现这种乱码行为,很显然,我们前面查看高级保存选项发现 VS 2022 默认编码方式是 GB2312,所以这里不对。

  如果使用 QStringLiteral 不成功,我们还可以使用 QString::fromLocal8Bit 方法,它用于将使用本地编码方式(本地方式默认 GBK, GBK 和 GB2312 可以相互转换)转换为 QString 对象的内部 Unicode 编码。

str = QString::fromLocal8Bit("百香果真是一直可爱的小猫咪");
qDebug() << str << Qt::endl;//百香果真是一直可爱的小猫咪
//使用 QMessageBox 打开一个窗口输出该字符也不会出现乱码
QMessageBox::information(0, "title", str);//参数一:父窗口,参数二,标题;参数三,输出字符

  这样就可以正确的表示我们想要输出的中文字符串,也就是说需要我们将中文字符串转换编译器的编码格式才能够正确的输出。

  还有一点值得注意的是,当我们在 UI 界面上使用中文字符的时候,我们会发现他不会出现乱码行为,比如说我定义一个按钮,再其上面输入中文,如下:
在这里插入图片描述
  当我们运行该程序的时候会发现他并没有出现乱码行为,而这个可以通过看 UI 界面生成的代码得到答案

void retranslateUi(QMainWindow *QString_3_1Class){QString_3_1Class->setWindowTitle(QCoreApplication::translate("QString_3_1Class", "QString_3_1", nullptr));pushButton->setText(QCoreApplication::translate("QString_3_1Class", "\344\270\255\346\226\207\346\214\211\351\222\256", nullptr));} // retranslateUi

  通过上述代码我们可以看出,他直接通过界面设计器将其转换成 UTF-8 格式,然后再通过 QCoreApplication::translate 方法将其翻译成对应的中文。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Tcping:一款实用的端口存活检测工具

简介 tcping 是一个基于TCP协议的网络诊断工具,通过发送 TCP SYN/ACK包来检测目标主机的端口状态。 官网:tcping.exe - ping over a tcp connection 优点: (1)监听服务器端口状态:tcping 可以检测指定端口的状态,默认是80端口,也可以指定其他端口。 (2)显示ping返…

ESXI主机证书报错

VCENTER提示主机证书状态异常 没有虚拟机运行 查看状态发现即将过期&#xff08;但其实已经过期了&#xff09; 点击更新即可&#xff0c;当有虚拟机运行时&#xff0c;不能直接更新证书。

探索自闭症寄宿学校的专属教育模式

在自闭症儿童教育的探索之路上&#xff0c;寄宿学校作为一种特殊的教育形式&#xff0c;正逐渐展现出其独特的优势与价值。这些学校不仅为自闭症儿童提供了一个安全、稳定的生活环境&#xff0c;更通过专属的教育模式&#xff0c;帮助他们逐步克服障碍&#xff0c;实现潜能的最…

掌握数据中心虚拟化:关键挑战与解决方案

数据中心虚拟化是使用云软件平台将物理数据中心转变为数字数据中心的过程&#xff0c;使企业能够远程访问信息和应用程序。它包括在数据中心内创建物理基础设施的多个虚拟版本&#xff0c;通过将服务器、存储和网络等资源划分为虚拟实体来实现资源的高效利用。 虚拟化环境中的关…

关于 NLP 深度学习的核心流程

基本流程实现的先后顺序&#xff08;每一步都包含很多技术点&#xff09;&#xff1a; 选定语言模型结构 关于语言模型&#xff1a; 作用 判断那一句话相对更合理&#xff0c;相对不合理的会得到较底的分值&#xff1a; 挑选成句概率分值最高的评价指标&#xff1a;PPL&…

微服务架构中的负载均衡与服务注册中心(Nacos)

1. 负载均衡&#xff1a;解决实际业务问题 1.1 业务场景思考 想象一个电子商务平台的微服务架构。我们有一个订单服务和多个用户服务实例。当订单服务需要调用用户服务时&#xff0c;它如何选择具体调用哪一台用户服务器&#xff1f;这就是负载均衡要解决的核心问题。 1.2 常…

主流卷积神经网络CNN总结

ResNet&#xff08;2015&#xff09;残差神经网络 残差结构 ResNet50具体卷积结构图 ResNeXt&#xff08;2016&#xff09;加入了分组卷积的思想&#xff0c;将原ResNet网络中的block替换成由group分组的block&#xff0c;两者得到的feature map一致&#xff0c;只是参数量更少…

《微软飞行模拟2024》储存空间需求仅不到前作的1/5

根据微软在最新一期 Xbox Wire 中的介绍&#xff0c;将于今年11 月登陆 Xbox Series X|S 主机的《微软飞行模拟2024》将比前作占用空间小很多。 微软解释了为何新作的文件大小仅为30GB&#xff0c;约为前作的五分之一。简单来说&#xff0c;微软使用了云流媒体传输技术。公司还…

SEC重拳打击币安

美国SEC于上周四提交针对币安的拟议修订投诉&#xff0c;重点关注交易所的代币上市流程。 1.美国证券交易委员会对币安提出拟议的修订申诉。 2.SEC在驳回币安最初诉讼的动议中基本获胜&#xff0c;但在驳回动议的命令中&#xff0c;关于某些代币的若干问题仍未得到解答。 3.SEC…

木马加载器通用套路

木马加载器通用套路 加载器 木马有两种类型&#xff0c;第一种是自己写的木马&#xff0c;作为远控客户端&#xff0c;第二种是加载器 加载器就是把C2的shellcode加载到目标机器的过程。目前攻防场景下&#xff0c;主流手段是通过加载器的方式实现远控 既然是加载器&#xff…

C#开源的一个能利用Windows通知栏背单词的软件

前言 今天给大家推荐一个C#开源且免费的能利用Windows通知栏背单词的软件&#xff0c;可以让你在上班、上课等恶劣环境下安全隐蔽地背单词&#xff08;利用摸鱼时间背单词的软件&#xff09;&#xff1a;ToastFish。 操作系统要求 目前该软件只支持Windows10及以上系统&…

基于uniapp的民宿酒店预订系统(后台+小程序)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

Maven Helper 插件

推荐指数&#xff1a;★★★★★ 分析依赖冲突插件 Maven Helper插件就可免去命令行困扰。通过界面解决依赖冲突。 点击此按钮&#xff0c;切换到此工具栏 可进行相应操作&#xff1a; Conflicts&#xff08;查看冲突&#xff09;All Dependencies as List&#xff08;列表形…

vue项目中——如何用echarts实现动态航线图

在Web开发中&#xff0c;数据可视化越来越受到重视。本文将带领大家了解如何在Vue项目中使用ECharts实现动态航线图&#xff0c;如下图&#xff1a;让你的数据展示更加生动有趣。 一、准备工作 1、安装ECharts 在项目根目录下&#xff0c;运行以下命令安装ECharts&#xff1a…

【CPU】CPU的物理核、逻辑核、超线程判断及L1、L2、L3缓存和缓存行说明

CPU物理核及L1、L2、L3及缓存 CPU缓存 CPU 缓存是一种用于存储临时数据以提高计算机程序性能的内存层次结构。它通常分为三个层次&#xff1a;L1&#xff08;一级&#xff09;、L2&#xff08;二级&#xff09;和L3&#xff08;三级&#xff09;缓存。缓存大小是CPU的重…

计算机毕业设计 基于Python Django的旅游景点数据分析与推荐系统 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

SpringBoot+Thymeleaf图书管理系统

一、项目介绍 > 这是一个基于SpringBootThymeleaf实现的图书管理系统。 > 包含图书管理、作者管理、分类管理、出版社管理等功能。 > 界面简洁美观&#xff0c;代码结构清晰&#xff0c;完成度比较高&#xff0c;适用于JAVA初学者作为参考项目。 二、项目演示 三…

【刷题日记】43. 字符串相乘

43. 字符串相乘 其实就是大数乘法题&#xff0c;这道题用草稿纸演练一下&#xff0c;其实很好找到方法&#xff0c;模拟大数乘法即可。需要注意的是进位和迭代值&#xff0c;还有注意向下取整和去除前导0&#xff08;容易遗漏&#xff09;。去除前导0的时候还要注意如果全是0&…

OpenAI或于9月24日发布ChatGPT高级语音模式

&#x1f989; AI新闻 &#x1f680; OpenAI或于9月24日发布ChatGPT高级语音模式 摘要&#xff1a;科技媒体报道&#xff0c;OpenAI计划在9月24日进一步推广ChatGPT的高级语音模式&#xff0c;预计将正式发布。该模式于7月向部分ChatGPT Plus用户开放&#xff0c;提供更为真实…