QT5 MinGW切换MSVC编译遇到编译不过问题
例:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//中文注释
QString str = tr("否");
QString str1 = tr("否z");
//中文注释啊
ui->label->setText(str);
}
问题点描述:
源代码文件是无BOM的utf-8编码格式,QtCreator用MinGW编译OK,切换成MSVC后报错:
mainwindow.cpp(1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
mainwindow.cpp(23): error C2001: 常量中有换行符
mainwindow.cpp(24): error C2146: 语法错误: 缺少“)”(在标识符“QString”的前面)
mainwindow.cpp(24): error C2146: 语法错误: 缺少“;”(在标识符“QString”的前面)
解决方式1:
①在工程pro文件中添加
msvc {
QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8
}
解决方式2:
①将源代码文件改为有BOM的utf-8编码格式,
②在报错的文件开头加入(指定执行字符集)
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
源字符集和执行字符集都是utf-8不会出现乱码问题。