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、效果

相关推荐
≮傷£≯√13 小时前
Opencv VideoCapture
qt·opencv
雨田言炎20 小时前
十、QThread多线程
linux·服务器·开发语言·前端·qt
常乐か2 天前
在 Ubuntu 24.04 中编译 Qt 5.15.2 项目完全指南
linux·qt·ubuntu
沫璃染墨2 天前
《Qt从零入门系列(二):Qt开发环境搭建——从Qt Creator到SDK配置》
c++·ide·qt
我是小灰灰吖2 天前
Ubuntu 22.04 切换为 X11 会话以解决 QT 桌面程序兼容性问题
linux·qt·ubuntu
≮傷£≯√2 天前
QT配置FFmpeg
开发语言·qt·ffmpeg
≮傷£≯√2 天前
配置 opencv Qt项目
人工智能·qt·opencv
qq_401700412 天前
Qt Modbus协议0x00
开发语言·qt
Zenova EdgeOS2 天前
C++ 工业边缘 Qt 桌面应用实战:从 QWidget 到模型视图、网络与多线程
网络·c++·qt
沫璃染墨2 天前
《Qt从零入门系列(一):Qt框架初识——从发展历史到跨平台开发》
c++·qt·系统架构·gui