PySide6 + QML - 调试日志01 -告别打印log中文乱码,快速且简单地解决

导言


如上所示,在qml代码里调用console.log打印中文log时会出现乱码。
Windows OS Qt C++ Engine App Logic Step 1: Log Request Step 2: Writes Raw UTF-8 Bytes
(No Python conversion) Step 3: Terminal reads bytes
assuming GBK/CP936 stdout Windows Terminal
(PowerShell / CMD) Qt Default Handler
(Internal C++) QML Code
console.log('中文') Result:
Garbled Text

出现乱码的原因是qml输出的编码是UTF-8,但是,Windows终端显示的编码格式是GBK/CP936。

使用qInstallMessageHandler模块可以简单且快速地解决这个乱码问题。

工程代码:

一、代码


1.1、使用qInstallMessageHandler模块

main.py

如上所示,在main.py增加代码qInstallMessageHandler(lambda mode, context, message: print(message))
Python (main_loader.py) Qt Environment Executes JS Redirects text Emits Message
(UTF-8) Auto-converts
to System Locale qInstallMessageHandler
(Custom Listener) Python print() QML Code
console.log('中文') Qt Backend
Message System Windows Terminal
CP936/GBK

如上所示,qInstallMessageHandler模块里面使用Python的print()将qml输出的UTF-8格式的消息自动转换为系统终端所需的编码器格式。比如,Windows终端需要CP936/GBK格式。

Main.qml

Main.qml不需要改动。

1.2、效果

相关推荐
深蓝海拓9 小时前
PySide6从0开始学习的笔记(三) 布局管理器与尺寸策略
笔记·python·qt·学习·pyqt
꧁坚持很酷꧂10 小时前
Windows安装Qt Creator5.15.2(图文详解)
开发语言·windows·qt
淼淼76311 小时前
QT表格与数据
开发语言·qt
小灰灰搞电子12 小时前
Qt 实现炫酷锁屏源码分享
开发语言·qt·命令模式
追烽少年x13 小时前
Qt面试题合集(二)
qt
零小陈上(shouhou6668889)14 小时前
YOLOv8+PyQt5玉米病害检测系统(yolov8模型,从图像、视频和摄像头三种路径识别检测)
python·qt·yolo
蓝天智能14 小时前
QT实战:qrc资源动态加载
qt
四维碎片15 小时前
【Qt】生产者-消费者模式学习笔记
笔记·qt·学习
追烽少年x17 小时前
Qt面试题合集(一)
qt
一只小bit17 小时前
Qt Widget 控件介绍:覆盖常用属性及API
开发语言·c++·qt·命令模式·cpp