Qt5中文乱码,同一个工程中的对话框,有的对话框显示正常,有的不行

fengwanzk 2019-08-22 05:23:39
开发环境:win7,64bit。
Qt5.6.0,64位。
编译器采用VS2013.
源文件编码:使用NotePad++转换为UTF-8带BOM。

1. 以前的解决办法:
(1) 创建文件:charsetting.inc
#ifndef CHARSETTING_INC
#define CHARSETTING_INC
#pragma execution_character_set("utf-8")
#endif // CHARSETTING_INC
(2) 修改pro文件:
win32::QMAKE_CXXFLAGS += -FIcharsetting.inc
win32::QMAKE_CFLAGS += -FIcharsetting.inc
直接在cpp文件中添加:#pragma execution_character_set("utf-8")是不起作用的。
2. 当时发现仍然有部分对话框类中显示中文乱码,解决办法是:QString str = QString::fromLocal8Bit("我是中文");
3. 偶尔还发现新建立的文件,运行显示乱码,解决方法是:使用TXT,先保存该文件为ANSI,然后在保存为UTF-8,然后就好了。
4. 后期,该工程添加了新的文件后,对于新的文件,上述方法不行了,同时还尝试了其他方法:
(1)Qt国际化,使用翻译文件。
(2)文件是UTF-8编码格式的。使用NotePad++对格式进行了处理(UTF-8 BOM编码)。
(3)工具-->选项-->文本编辑器-->行为,在右侧选项界面找到文件编码选项,设置为 UTF-8。


...全文
450 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yantuguiguziPGJ 2021-01-12
  • 打赏
  • 举报
回复
使用 #pragma execution_character_set(“utf-8”) 强制转换后,就不要再使用前面两种方法了,否则又乱码了,做无用功。
fengwanzk 2019-08-30
  • 打赏
  • 举报
回复
本来准备查看一下中文乱码的16进制数据,看下到底是何种编码。
后发现采用该方法可行:
在出现乱码的文件中,添加:
#include <QTextCodec>
在构造函数中添加:QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));
中文乱码消失了。
芸编蕴香 2019-08-24
  • 打赏
  • 举报
回复
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《Qt中文乱码--使用Unicode万国码解决》, 一起来围观吧 https://blog.csdn.net/u013894391/article/details/93928264
fengwanzk 2019-08-22
  • 打赏
  • 举报
回复
我为所有使用中文的地方定义了全局宏:#define STR(str) (QString::fromLocal8Bit(str))。有的地方正常,有的地方不正常。
fengwanzk 2019-08-22
  • 打赏
  • 举报
回复
请教可能的原因。

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧