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 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
lly2024062 小时前
C 标准库 - `<stdio.h>`
开发语言
一江寒逸2 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
沫璃染墨2 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
jwn9992 小时前
Laravel6.x核心特性全解析
开发语言·php·laravel
D4c-lovetrain2 小时前
linux个人心得22 (mysql)
数据库·mysql
迷藏4942 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
功德+n2 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
明日清晨2 小时前
python扫码登录dy
开发语言·python
阿里小阿希2 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql