PySide6 + QML - 调试日志01 -告别打印log中文乱码,快速且简单地解决
摘要 QML中使用console.log打印中文时出现乱码,原因是QML输出UTF-8编码,而Windows终端默认使用GBK/CP936编码。通过在Python中调用qInstallMessageHandler模块,将日志消息重定向到print()函数,可自动完成编码转换,解决乱码问题。该方法无需修改QML代码,仅需在Python主文件中添加一行拦截代码即可实现兼容性输出。 关键词:QML乱码、
导言

如上所示,在qml代码里调用console.log打印中文log时会出现乱码。
出现乱码的原因是qml输出的编码是UTF-8,但是,Windows终端显示的编码格式是GBK/CP936。
使用qInstallMessageHandler模块可以简单且快速地解决这个乱码问题。
工程代码:
- github:https://github.com/q164129345/myPyside6_QML/tree/main/debugLog01_the_sample_method
- gitee: https://gitee.com/wallace89/myPyside6_QML/tree/main/debugLog01_the_sample_method
一、代码
1.1、使用qInstallMessageHandler模块
main.py
如上所示,在main.py增加代码qInstallMessageHandler(lambda mode, context, message: print(message))。
如上所示,qInstallMessageHandler模块里面使用Python的print()将qml输出的UTF-8格式的消息自动转换为系统终端所需的编码器格式。比如,Windows终端需要CP936/GBK格式。
Main.qml
Main.qml不需要改动。
1.2、效果

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)