前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt Creator 中文编译失败 怎么办

Qt Creator 中文编译失败 怎么办

作者头像
饶文津
发布2020-06-02 14:16:33
1.8K0
发布2020-06-02 14:16:33
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏

在Qt Creator 中c++源码有中文字符,结果不能编译成功。

代码

代码语言:javascript
复制
QMessageBox::warning(this, "警告","用户名密码错误",QMessageBox::Yes);

报错如下:

-1: warning: C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss error: C2001: newline in constant

解决方法:

首先源码的保存格式是UTF-8。Qt creator 的菜单里 编辑-Select Encoding,可以选择编码。以及工具-选项->文本编辑器->行为->文件编码里要选择UTF-8,BOM: 如果是UTF-8则自动添加。

  1. 给中文字符串加QStringLiteral宏或QString::fromLocal8Bit函数:QStringLiteral("你好中文!"); 不过,在这两种形式下,你都无法用tr方法来创建翻译了。
  2. 另一种方法是宏定义:
代码语言:javascript
复制
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif

这个宏告诉MSVC,执行字符集是UTF-8编码的,别瞎整成GB2312的!还有个好处,就是能用tr包中文,方便日后的翻译。

ps

之前的报错,我还发现,如果是偶数个中文就不会报错,奇数个就会编译报错。

同样适用Qt中文乱码的问题。 其实主要原因是用MSVC编译造成的。

参考:Qt与MSVC中文乱码问题的解决方案

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决方法:
    • ps
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档