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

qt控制台程序与qt窗口程序在读取数据库中文字段的差异!!巨坑

问题:最近在自己编写一个类,这个类需要对mysql数据库进行插入和查询。因为最后是以一个类文件的形式拿来单独使用,所以在创建项目的时候就创建了一个qt的控制台程序。但是在对数据库的内容进行查询时,出现了中文乱码。参考了之前的程序对数据的读写,感觉没有什么差异,最后想到可能是控制台程序和qt桌面程序处理方式不一样,最后才发现确实是有这么一个坑存在。

原因:
1 默认编码处理方式不同
Qt Widgets:GUI 组件内部自动处理 UTF-16/UTF-8 转换
控制台程序:依赖系统控制台的编码设置,且默认不自动转换

2.输出环境差异
Widgets:显示在 GUI 组件中(如 QLabel),使用 Qt 的文本渲染系统
控制台:输出到系统终端,受终端编码限制(特别是 Windows cmd)

  1. 文本编解码器默认设置不同
    Widgets 应用通常有更完整的编码初始化
    控制台程序默认可能使用本地编码(如 Windows 的 GBK)

解决方式:
添加如下代码

#include <windows.h>// 在 main() 中:
SetConsoleOutputCP(65001); // 设置控制台输出为 UTF-8
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

如果是Linux系统,应该就不需要windows那块代码,因为Linux下默认使用utf8

相关文章:

  • 大模型 提示模板 设计
  • 腾讯 ovCompose 开源,Kuikly 鸿蒙和 Compose DSL 开源,腾讯的“双”鸿蒙方案发布
  • 大模型赋能:金融智能革命中的特征工程新纪元
  • AutoGenTestCase - 借助AI大模型生成测试用例
  • 更新已打包好的 Spring Boot JAR 文件中的 class 文件
  • 项目开发:【悟空博客】基于SSM框架的博客平台
  • html基础01:前端基础知识学习
  • 古典密码学介绍
  • SpringAI系列 - MCP篇(三) - MCP Client Boot Starter
  • 股票指数期货的变动与股票价格指数的关系是什么?
  • 火山云服务器优势
  • Ⅲ-2.计算机二级选择题(三大结构之选择结构)
  • SOC-ESP32S3部分:28-BLE低功耗蓝牙
  • 多视角学习、多任务学习,迁移学习
  • 【眼镜店管理专用软件】佳易王眼镜店处方开单视力检查管理系统功能操作教程#视力检查#旧镜检查#开单打印
  • 核心机制:流量控制
  • MYSQL 高级 SQL 技巧
  • AI Coding 资讯 2025-06-03
  • Python爬虫解析动态网页:从渲染到数据提取
  • Python训练营打卡Day42
  • 专做民宿的网站/写文章在哪里发表挣钱
  • 盘锦市建设银行网站/平台推广方式
  • wordpress开发门户网站/网络推广好做吗
  • 网站建设感受/百度关键词热度排名
  • 做app网站的软件有哪些内容吗/鄂州网站seo
  • 教做家庭菜的网站/91关键词排名