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

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

http://www.lryc.cn/news/2403106.html

相关文章:

  • 动手学深度学习12.7. 参数服务器-笔记练习(PyTorch)
  • 告别数据泥沼,拥抱智能中枢:King’s四位一体重塑科研生产力
  • 智绅科技 —— 智慧养老 + 数字健康,构筑银发时代安全防护网
  • Code Composer Studio CCS 工程设置,如何设置h文件查找路径?
  • Qt生成日志与以及捕获崩溃文件(mingw64位,winDbg)————附带详细解说
  • web前端开发如何适配各分辨率
  • 本机无法远程别的计算机的方法
  • 智能手表健康监测系统的PSRAM存储芯片CSS6404LS-LI—高带宽、耐高温、微尺寸的三重突破
  • 蓝桥杯国赛题2022
  • Pycharm中添加不了新建的Conda环境(此篇专门给Daidai写的)
  • 如何选择专业数据可视化开发工具?为您拆解捷码全功能和落地指南!
  • 关于如何使用VScode编译下载keil工程的步骤演示
  • 微信小程序动态效果实战指南:从悬浮云朵到丝滑列表加载
  • Redis底层数据结构之深入理解跳表(2)
  • 大模型编程助手-Cline
  • [蓝桥杯]兰顿蚂蚁
  • 使用 Python 构建并调用 ComfyUI 图像生成 API:完整实战指南
  • 嵌入式学习笔记-freeRTOS taskENTER_CRITICAL(_FROM_ISR)跟taskEXIT_CRITICAL(_FROM_ISR)函数解析
  • Unity基础-数学向量
  • 【华为云Astro-服务编排】服务编排中图元的使用与配置
  • 1panel面板中部署SpringBoot和Vue前后端分离系统 【图文教程】
  • C++.OpenGL (7/64)摄像机(Camera)
  • 使用xdocreport导出word
  • 青少年编程与数学 01-011 系统软件简介 05 macOS操作系统
  • Python打卡训练营学习记录Day43
  • 【Android基础回顾】二:handler消息机制
  • 每日Prompt:每天上班的状态
  • .net ORM框架dapper批量插入
  • C++11 右值引用:从入门到精通
  • .net 使用MQTT订阅消息