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

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

原因:

1 默认编码处理方式不同

Qt Widgets:GUI 组件内部自动处理 UTF-16/UTF-8 转换

控制台程序:依赖系统控制台的编码设置,且默认不自动转换

2.输出环境差异

Widgets:显示在 GUI 组件中(如 QLabel),使用 Qt 的文本渲染系统

控制台:输出到系统终端,受终端编码限制(特别是 Windows cmd)

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

解决方式:

添加如下代码

cpp 复制代码
#include <windows.h>

// 在 main() 中:
SetConsoleOutputCP(65001); // 设置控制台输出为 UTF-8
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

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

相关推荐
倔强的石头_2 小时前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战
数据库
SelectDB4 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
jiayou641 天前
KingbaseES 表级与列级加密完全指南
数据库·后端
GBASE2 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
用户805533698032 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner2 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
xiezhr3 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
吃糖的小孩3 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
笃行3504 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3504 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库