Qt 5.5.0(Qt Creator 3.4.2 (opensource) ) 中 如下简单程序为什么没正确输出中文??

w22net 2016-07-21 09:06:21
Qt 5.5.0(Qt Creator 3.4.2 (opensource) ) 中 如下简单程序为什么没正确输出中文??
请老司机指点

#include <QCoreApplication>
#include <QtDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<QObject::tr("排序失败!");

return a.exec();
}

输出结果为:
"\u6392\u5E8F\u5931\u8D25\uFF01"
...全文
491 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
w22net 2017-06-03
  • 打赏
  • 举报
回复
@goldenhawking 在ubuntu12.04 下 Qt4.8.0 Qt Createor 2.4.1 下 QString::fromLocal8Bit(“排序失败”) QString::fromUTF8(“排序失败”) 都有效 ubuntu 下如何改变cpp文件的编码呢???
  • 打赏
  • 举报
回复
对tr()的理解不对。 tr里应该放英语,而后生成翻译文件 .ts,发布为.qm 试试 QString::fromUTF8(“排序失败”) 和 QString::fromLocal8Bit(“排序失败”) 中文字符串与Cpp文件存储的编码有关。不同的编码,字节流不同。 建议你看看我的博客 http://blog.csdn.net/goldenhawking/article/details/54598196
画茧自缚 2016-07-25
  • 打赏
  • 举报
回复
引用 1 楼 w22net 的回复:
在代码中如何用 printf("排序失败"); 也不能正确输出中文,输出一种不认识的汉字
是否源码未设置utf-8格式,按照你的写法是能正常输出中文的。
  • 打赏
  • 举报
回复
两个小问题: 1. tr("") 是用于国际化的工具,里面包含的应该是32~127 ascii字符,不建议出现其他字符。正确的做法是创建TRANSLATIONS 文件: TRANSLATIONS += XXXXX.ts 而后,用翻译器 lupdate ,在 tr 里写的英文、界面控件里的英文都会出现,编辑 ts 文件给出翻译后, lrelase 为.qm,在main中加载即可。 2. 中文在代码里最好是和编译器的代码页一致。如果是 Linux ,建议UTF-8。不建议直接嵌入中文,Qt的国际化做的非常好,建议参考官方帮助“国际化”一章。
冷静忍耐 2016-07-22
  • 打赏
  • 举报
回复
Qt5.5一般这么写,而且保证源码是utf8格式,就不会乱码,记事本另存为utf8格式 #include <QApplication> #include <QDebug> int main(int argc, char *argv[]) { QApplication a(argc, argv); qDebug()<<"排序失败!"; return a.exec(); }
w22net 2016-07-21
  • 打赏
  • 举报
回复
在代码中如何用 printf("排序失败"); 也不能正确输出中文,输出一种不认识的汉字

16,216

社区成员

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

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