Qt中文显示乱码

jiejietongxue 2019-05-14 10:41:55

QT小白,想在界面控件上输出字符串变量(含中文)。调用QTool::showMsg("数据库连接失败");

显示乱码,其中showMsg方法为

void QTool::showMsg(QString text)
{
QString str ;
str = QString("%1").arg(text);
ui->label->setText(str);

}
...全文
612 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dandingkaer2 2019-05-30
  • 打赏
  • 举报
回复
直接用宽字符,Qstring::fromWstdString(L("测试文字"))。
fly4free 2019-05-22
  • 打赏
  • 举报
回复
showMsg ( QString::fromLocal8Bit("我是中文") );
试试?

为了可移植性,你还是 把代码文件保存成 utf-8 with BOM 吧,
然后在msvc下用 fromLocal8Bit("中文") ,,,,( 没试过 mingw ) 但是 qDebug() << QStringLiteral("中文哦"); 这样也行
在 Linux 下 用 fromUtf8("中文")

自己定义一个 my_tr 宏 或者 函数去处理这种情况吧
----------- Qt5.5.1_msvc2010 环境,Qt Creator 3.5.1 验证 ------

4楼说的 前面加 u8 那个如果编译器版本低,是不支持的。
你要是 vs2017 打底,肯定可以

诺水城子 2019-05-22
  • 打赏
  • 举报
回复
要使用正确的编码方式,要看text究竟是什么编码方式。
未狂 2019-05-20
  • 打赏
  • 举报
回复
msvc的Qt,在中文字符串前面加u8,u8"中文字符" mingw的Qt,QStringLiteral("中文字符"),编译前用记事本把cpp文件另存为utf-8格式
走好每一步 2019-05-15
  • 打赏
  • 举报
回复
//在头文件前面加上下面几行代码 #ifdef WIN32 #pragma execution_character_set("utf-8") #endif 网上很多做法都是很老套,上面这个应该可行,你试试
走好每一步 2019-05-15
  • 打赏
  • 举报
回复
引用 1 楼 jiejietongxue 的回复:
补充说明,我用的Qt5,也在main函数中添加了QTextCodec::setCodecForLocale(QTextCodec::codecForName('GBK'));但是还是显示乱码
这是老套的做法了。不需要这样弄。 显示乱码不乱码主要还是看你文件编码
jiejietongxue 2019-05-14
  • 打赏
  • 举报
回复
补充说明,我用的Qt5,也在main函数中添加了QTextCodec::setCodecForLocale(QTextCodec::codecForName('GBK'));但是还是显示乱码

16,815

社区成员

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

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