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

解决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>
#endif

int 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-8
    QTextCodec::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.kler.cn/a/488193.html

相关文章:

  • plane开源的自托管项目
  • 《Spring Framework实战》13:4.1.4.4.延迟初始化Bean
  • qml Column详解
  • 0109鹅厂面经
  • 媒体资源生产转码过程
  • Formality:默认配置文件
  • 国产信创实践(国能磐石服务器操作系统CEOS +东方通TongHttpServer)
  • 【海南省】乡镇界arcgis格式shp数据乡镇名称和编码gis矢量数据
  • 设TCP的门限值的初始值为10个报文段,当拥塞窗口上升到24时网络发生了超时,TCP使用慢开始和拥塞避免后第一轮的拥塞窗口大小是,门限值为
  • pytorch torch.clamp函数介绍
  • 在职研生活学习--20250108~开题报告随想
  • 深入浅出C#线程池ThreadPool:提升程序性能的利器
  • 华为企业组网的一些基本运用
  • matlab函数讲解——randsample
  • 数据结构-顺序表的相关算法实现
  • 工程工程项目管理软件的核心价值与应用策略
  • OpenCV相机标定与3D重建(53)解决 Perspective-3-Point (P3P) 问题函数solveP3P()的使用
  • Linux内核TTY子系统有什么(6)
  • 对Python的深度学习
  • 一键整理背包界面功能