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

解决Qt打印中文字符出现乱码

在 Windows 平台上,默认的控制台编码可能不是 UTF-8,这可能会导致中文字符的显示问题。

下面是在 Qt 应用程序中设置中文字体,并确保控制台输出为 UTF-8 编码:
 

1. Qt 应用程序代码

在 Qt 中,我们可以使用 QApplication 来创建应用程序实例,并且通过 QFont 设置应用程序的字体。为了确保中文字符能够正确显示,可以选择一个常见的中文字体(例如 "Microsoft Yahei")。另外,对于 Qt 5 及以下版本,我们还需要设置文本编码为 UTF-8 来确保支持中文字符。

#include <QApplication>
#include <QFont>
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
#include <QTextCodec>
#endifint main(int argc, char *argv[])
{QApplication a(argc, argv);// 设置中文字体a.setFont(QFont("Microsoft Yahei", 9));#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)// 设置本地编码为UTF-8QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
#endif// 启动应用程序return a.exec();
}

2. 控制台设置为 UTF-8 编码

在 Windows 系统中,控制台默认使用的是 GBK 编码(中文 Windows 上)。如果需要在控制台中输出中文并确保字符能够正确显示,可以通过设置控制台的输出编码为 UTF-8 来避免乱码。使用 SetConsoleOutputCP 函数可以实现这一点。

#include <windows.h>int main() {// 设置控制台输出为UTF-8编码SetConsoleOutputCP(CP_UTF8);// 现在可以正常输出中文字符了std::wcout << L"你好,世界!" << std::endl;return 0;
}
【附】项目中加工作台的步骤:
http://www.lryc.cn/news/520772.html

相关文章:

  • 第三十八章 Spring之假如让你来写MVC——适配器篇
  • 服务器引导异常,Grub报错: error: ../../grub-core/fs/fshelp.c:258:file xxxx.img not found.
  • 昵称 校验
  • MATLAB学习笔记目录
  • 基于单片机的语音控制玩具汽车的设计
  • Qt WORD/PDF(五)使用Json一键填充Word表格
  • vue3+ts的几个bug调试
  • DVWA靶场CSRF漏洞通关教程及源码审计
  • 前端开发:HTML常见标签
  • 【机器学习】主动学习-增加标签的操作方法-样本池采样(Pool-Based Sampling)
  • 【Rust自学】11.9. 单元测试
  • 深入理解Web存储机制:Cookie、SessionStorage与LocalStorage的区别
  • SpringBoot之BeanDefinitionLoader类源码学习
  • 【芯片封测学习专栏 -- 2D | 2.5D | 3D 封装的区别和联系】
  • 从硬件设备看Linux
  • open3d+opencv实现矩形框裁剪点云操作(C++)
  • git 本地操作
  • PL/SQL语言的文件操作
  • linux lsof 和 fuser命令介绍
  • [Python学习日记-76] 网络编程中的 socket 开发 —— 介绍、工作流程、socket 模块用法和函数介绍
  • vue(七) vue进阶
  • [Transformer] The Structure of GPT, Generative Pretrained Transformer
  • Django Admin 自定义操作封装
  • http和https有哪些不同
  • PL/SQL语言的数据库交互
  • 亿道三防丨三防笔记本是什么意思?和普通笔记本的优势在哪里?
  • 从项目代码看 React:State 和 Props 的区别及应用场景实例讲解
  • Vue 学习之旅:核心技术学习总结与实战案例分享(vue指令下+计算属性+侦听器)
  • freertos的基础(二)内存管理:堆和栈
  • vue \n 换行不不显示