Qt Creator 编译时出现中文 error: C2001: 常量中有换行符的问题,通常由文件编码与编译器字符集不兼容导致。
一、修改文件编码格式
-
添加 UTF-8 BOM 签名
- 在 Qt Creator 中设置:
工具 -> 选项 -> 文本编辑器 -> 行为 -> UTF-8 BOM
,选择“如果编码是 UTF-8 则添加” 。 - 注意:修改后需手动保存文件(如添加空格并删除)以应用新编码 。
- 在 Qt Creator 中设置:
-
直接转换文件编码
- 使用文本编辑器(如 Notepad++ 或 EditPlus)将文件编码转换为 UTF-8 BOM 或 GBK 格式 。
二、代码层优化
-
用
QStringLiteral
包裹中文字符m_tableTitle.append(QStringLiteral("文件名")); // 避免直接使用纯中文字符串
-
添加编译指令
在源文件开头添加:#pragma execution_character_set("utf-8") // 强制指定执行字符集为 UTF-8
三、其他技巧
-
调整字符串内容
- 在中文末尾添加英文符号(如
.
)或确保中文字符数为偶数,可临时绕过编译错误 。
- 在中文末尾添加英文符号(如
-
统一项目编码
- 确保所有文件使用一致的编码格式(推荐 UTF-8 BOM),避免混合编码导致冲突 。
四、环境适配
- MinGW 构建套件:若使用 MinGW,需在代码中显式处理中文字符(如
QStringLiteral
),或设置系统编码兼容模式 。 - MSVC 构建套件:优先通过文件编码格式(UTF-8 BOM)解决问题 。