[转载]Qt C2001报错:“常量中有换行符”且部分中文显示黑框

版权声明

版权声明:本文为CSDN博主「星辰丶大海」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43521843/article/details/116864525
原文标题:Qt编程遇C2001错误,提示“常量中有换行符”
注意事项:本文在转载时对文章标题、内容排版有微小改动!

解决方案

旧方案

在新电脑做一个简单的Qt项目时,在debug输出的时候,出现了C2001错误,提示“常量中有换行符”,

比如

ui->pBtnStart->setText(tr("开始监测"));

就会出现常量中有换行符,肉眼确实没看出来......

但是

ui->pBtnStart->setText(tr("停止监测"));

却可以顺利通过编译,试了很久改了编码也不行,即便编译通过界面显示却会乱码。

最后通过网上百度,找到了3种解决方式:

  • 1、将字符中的中文字符用英文字母或单词代替,这样解决的好处是代码规范,语言统一,缺点就是没有中文表达那样直接、清晰。(如果是这样我就不会去用中文了!!!)
  • 2、使用中文字符常量时,用QStringLiteral修饰中文字符,格式如QStringLiteral("中文字符"),这种方法必须在每次使用中文字符时都需要进行修饰,否则还是会出现错误,所以比较麻烦。
  • 3、直接在头文件声明处添加 #pragma execution_character_set("utf-8"),直接解决此错误。

我采用了第3种方法,其步骤如下:

  • 1、QT界面菜单栏->工具->选项->文本编辑器,修改成如果编码是UTF-8则添加,如图:

  • 2、QT界面菜单栏->编辑->Slect Encoding...->UTF-8->按编码保存

  • 3、在需要的头文件中加入#pragma execution_character_set("utf-8")即可
#pragma execution_character_set("utf-8")

2022更新

出现这种情况的可能是在使用Qt的时候采用了msvc编译,源代码文件是无BOM的utf-8编码格式,QtCreator用MinGw编译OK,切换成MSVC后报错。有以下解决方法

方案一:直接换成MinGw编译

将MSVC

改成MinGW

#### 方案二:在工程文件pro添加以下代码

在工程文件pro添加以下代码,如图:

代码如下:

msvc {
    QMAKE_CFLAGS += /utf-8
    QMAKE_CXXFLAGS += /utf-8
}
最后修改:2022 年 06 月 16 日
如果觉得我的文章对你有用,请随意赞赏