Qt使用中文字符串乱码的问题

文章目录

  • vs编译器下
    • 第一种解决方式
    • 第二种解决方式
  • Qt编译器下

 我们在使用qt的时候有时候会遇到打印中文字符串的时候出现中文乱码的问题,主要是由于Qt的QString字符串存储的方式是使用utf-8的编码方式,如果我们本地的文件是使用GBK方式的编码再使用中文字符串的话就会出现打印乱码的情况。

vs编译器下

 首先我们在vs编译器下使用中文字符串实验一下:

#include <QtWidgets/QApplication>
#include <QDebug>
#include <QMessageBox>
#include <QtCore5Compat/qtextcodec.h>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{QApplication a(argc, argv);QString str = "中文测试";qDebug() << str;cout << str.toStdString() << endl;QMessageBox::information(0, "title", str);return a.exec();
}

在这里插入图片描述
 现在如果我们在文件中使用中文字符串的话打印出来都是乱码的,因为我们的文件是以GBK编码方式的,而QString内部存储字符串是以UTF-8的方式来的,所以会出现乱码。

第一种解决方式

我们可以将文件的编码方式修改为utf-8方式编码的即可。
在这里插入图片描述
在高级选项中可以进行设置。
在这里插入图片描述
 但是我们看到使用c++方式打印的字符串乱码,这是由于cout需要是以GBK方式编码的字符串进行打印。

cout << str.toLocal8Bit().toStdString() << endl;

将字符串先转化成本地的编码方式,即GBK的编码方式。
在这里插入图片描述

第二种解决方式

 Qt内部其实提供了当我们文件的编码方式为GBK时将字符串转化为UTF-8编码方式赋给QString。

QString str = QString::fromLocal8Bit("中文测试");

在这里插入图片描述

Qt编译器下

#include "widget.h"#include <QApplication>
#include <QDebug>
#include <QMessageBox>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{QApplication a(argc, argv);QString str = "中文测试";qDebug() << str;cout << str.toLocal8Bit().toStdString() << endl;QMessageBox::information(0, "title", str);return a.exec();
}

在这里插入图片描述
没有进行设置的话,Qt的文件编码方式都是utf-8,所以直接使用中文也不会出问题。
在这里插入图片描述
需要修改的话可以在这边进行修改。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

osgEarth真HelloWorld

osgEarth真HelloWorld vcpkg installtests vcpkg install osgEarth安装指南 https://docs.osgearth.org/en/latest/install.html&#xff0c; 预先设置ports/osg/portfile.cmake GL3 否则调用osg相关功能时会出现如下提示 OpenSceneGraph does not define OSG_GL3_AVAILABLE; …

Factor Transfer(NeurIPS 2018)

paper&#xff1a;Paraphrasing Complex Network: Network Compression via Factor Transfer official implementation&#xff1a;https://github.com/Jangho-Kim/Factor-Transfer-pytorch 背景 尽管现有的知识蒸馏方法如KD、FitNet等带来了性能的改善&#xff0c;但直接传…

element plus使用问题

文章目录 element plusvue.config.js注意1、有时候会报错 not a function2、使用 ElMessage 报错3、 element plus 版本过高4、警告Feature flag VUE_PROD_HYDRATION_MISMATCH_DETAILS is not explicitly defined.5、报错 ResizeObserver loop completed with undelivered noti…

如何监控两台android设备之间串口通讯的ADB日志?

如果你的目标是将设备通过 Wi-Fi 连接到计算机&#xff0c;可以执行以下步骤&#xff1a; 一.通过 USB 连接设备&#xff1a; adb devices 确保设备通过 USB 连接&#xff0c;并且可以通过 adb devices 命令正常识别。 二、将设备1和设备2都切换到 TCP/IP 模式&#xff1a;…

汇编led驱动的代码编写以及ubuntu下的烧录

文章目录 前言一、实验代码详解二、编译1、arm-linux-gnueabihf-gcc 编译文件2、arm-linux-gnueabihf-ld 链接文件3、arm-linux-gnueabihf-objcopy 格式转换4、arm-linux-gnueabihf-objdump 反汇编5、编写Makefile文件 三、代码烧写1、将 imxdownload 拷贝到工程根目录下2、给予…

幻兽帕鲁服务器多少钱一台?腾讯云新版报价

腾讯云幻兽帕鲁服务器4核16G、8核32G和16核64G配置可选&#xff0c;4核16G14M带宽66元一个月、277元3个月&#xff0c;8核32G22M配置115元1个月、345元3个月&#xff0c;16核64G35M配置580元年1个月、1740元3个月、6960元一年&#xff0c;腾讯云百科txybk.com分享腾讯云幻兽帕鲁…

Linux的常见指令和基本操作演绎【复习篇章一】

文章目录 前言下载安装 XShellXShell 下的复制粘贴热键操作01.ls指令tree 02.cd指令03.touch指令04.mkdir指令&#xff08;重要&#xff09;&#xff1a;05.rmdir指令 && rm 指令&#xff08;重要&#xff09;06.组合07.man指令&#xff08;重要&#xff09;&#xff1…

【Linux 内核源码分析】多核调度分析

多核调度 SMP&#xff08;Symmetric Multiprocessing&#xff0c;对称多处理&#xff09;是一种常见的多核处理器架构。它将多个处理器集成到一个计算机系统中&#xff0c;并通过共享系统总线和内存子系统来实现处理器之间的通信。 首先&#xff0c;SMP架构将一组处理器集中在…

Unity 光照

光照烘培 光照模式切换为 Baked 或 Mixed&#xff0c;Baked 模式完全使用光照贴图模拟光照&#xff0c;运行时修改光照颜色不生效&#xff0c;Mixed 模式也使用光照贴图&#xff0c;并且进行一些实时运算&#xff0c;运行时修改光照颜色会生效 受光照影响的物体勾选 Contribute…

Cesium渲染白膜数据

async DrawBaiMoFun2() {// tiles 矩阵变换let changePostion = (tileSet, tx, ty, tz, rx, ry, rz, scale, center) => {if (!center) return;const m = Cesium.Transforms.eastNorthUpToFixedFrame(center);const surface =center ||Cesium.Cartesian3.fromRadians(cartog…

【深度学习:开源BERT】 用于自然语言处理的最先进的预训练

【深度学习&#xff1a;开源BERT】 用于自然语言处理的最先进的预训练 是什么让 BERT 与众不同&#xff1f;双向性的优势使用云 TPU 进行训练BERT 结果让 BERT 为您所用 自然语言处理 &#xff08;NLP&#xff09; 面临的最大挑战之一是训练数据的短缺。由于 NLP 是一个具有许多…

语音生成、写作增强、论文辅助、英文学习,AI原生应用精彩推荐一箩筐!

崭新的2024年已然降临&#xff0c;飞桨星河社区再次涌现出诸多精彩纷呈的AI原生应用&#xff0c;快来一同探索&#xff0c;发现这些应用带来的无限惊喜与可能吧&#xff01; 语音生成&#xff1a;10音色自由选择 应用介绍 本应用基于ERNIE SDK和语音合成工具&#xff0c;可以…