zoukankan      html  css  js  c++  java
  • Qt Creator 中文编译失败 怎么办

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

    代码

    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. 另一种方法是宏定义:

    #if _MSC_VER >= 1600
    #pragma execution_character_set("utf-8")
    #endif
    

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

    ps

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

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

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

  • 相关阅读:
    【转载】关于C#中动态加载AppDomain的问题
    poj2239
    poj2231
    poj2229
    poj2234
    poj2236
    前 路
    只含一个单词的句子
    做人准则
    改变人生的32句励志名言
  • 原文地址:https://www.cnblogs.com/flipped/p/6645693.html
Copyright © 2011-2022 走看看