QT MSVC中文编译出错error: C2001: 常量中有换行符

QT上用MSVC去编译部分含有中文的字符串时会出现编译错误error: C2001: 常量中有换行符,但用MinGW就不会。需在后面加个正常的字符才能正常编译,但出现乱码了。其编码如下图,明显的看着编码不对。
这里写图片描述
如果想都编译成功,那就需要在设置里把“文件编码”的UTF-8 BOM改成“如果编码是UTF-8则添加”。如下图
这里写图片描述
但这样做直接编译出来的都是乱码。编码如下图
这里写图片描述
需用QStringLiteral()把乱码的字符串括起来,转换后的类型是QString。但用起来很麻烦,每个都要加上去。或者可以在对于的头文件或.cpp文件上加上#pragma execution_character_set(“utf-8”)。

后面我的得做法是:
1、设置是工具->选项->文本编辑器->行为->UTF-8 BOM设置成“如果编码是UTF-8则添加”
2、qglobal.h文件上加上#pragma execution_character_set(“utf-8”)。

### VS2022 中解决 `error C2001` 错误的方法 当遇到 `error C2001: 常量中有换行符` 的错误时,通常是因为源代码中的字符串字面量包含了意外的换行符。此问题可能由多种因素引起,包括但不限于编码不匹配或实际存在的未封闭字符。 #### 设置编译器选项以支持 UTF-8 编码 为了确保 Visual Studio 使用正确的字符集处理包含非 ASCII 字符(如中文)的源文件,可以在项目的属性中指定 `/utf-8` 编译开关[^3]: 1. 右键点击解决方案资源管理器中的项目名称; 2. 选择“属性”菜单项打开项目设置对话框; 3. 导航到 **C/C++ -> 命令行** 页面; 4. 在附加选项字段内添加参数 `/utf-8`。 这样做可以指示 MSVC 编译器按照 UTF-8 编码读取源文件,从而避免因不同编码间的转换而导致的潜在问题。 #### 修改文件保存格式为无 BOM 的 UTF-8 除了调整编译器行为外,还应确认所有涉及的源文件均被保存成不含 BOM (Byte Order Mark) 的纯 UTF-8 格式。这可以通过大多数现代文本编辑工具完成,比如 Notepad++ 或者 Visual Studio 自身提供的功能。 #### 清理并重建工程 有时旧的对象文件可能会保留着之前构建过程中产生的二进制数据残留物,这些残留可能导致新的更改无法生效。因此建议执行一次完整的清理操作后再重新构建整个工程项目。 ```cpp // 示例:确保字符串定义正确且没有多余的空白字符 QVector<QString> m_tableTitle; m_tableTitle.append("文件名"); ``` 上述代码片段展示了如何声明一个存储表头信息的容器,并向其中追加一条记录。注意这里并没有任何显式的换行符存在于字符串内部。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值