vs2015打开QT项目出现的问题
找个地方,记录下QT学习中的小问题
问题描述
C2001:常量中有换行符

问题探索
通过百度了解到可能是中文字符编码问题造成的
但是,尝试了一些方法,运行中又会出现中文乱码状况
① 根据百度经验,设属性,常规->字符集,C/C+±>命令行 添加utf-8
② 加入语句:#pragma execution_character_set(“utf-8”)
③ 在中文处添加:QStringLiteral
④ 拆分字符串重新组包:随意乱拆的。此错误消失,出现中文乱码
⑤ 在此错误消失后,出现中文乱码时,使用①②③,没有效果
问题解决
从最原始的错误出发
warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
error: C2001: 常量中有换行符
进行学习:(来源某不知名大大作者:Winland0704文档说明)
VC编译器不能识别不带BOM(Byte Order Mark,字节顺序标记)标记的UTF-8文件,它默认将QtCreator生成的UTF-8源代码文件当作GBK处理,UTF-8的一个汉字是3字节,GBK的一个汉字是2字节。有意思的问题来了:
①如果UTF-8源文件单行里的汉字是偶数个,能够整除2,这样VC编译器编译不出错。(比如2个UTF-8汉字在VC编译器看来是3个GBK汉字,可以编译,运行也不出错。)
②如果UTF-8源文件单行里的汉字为奇数个,不能整除2,那样VC编译器觉得汉字编码错误,因为不能以GBK双字节的汉字来解析,少东西了,这时候报错 “C2001: 常量中有换行符”。
一般由VS生成的项目,就使用VS进行打开编辑。
如果是由QtCreator生成的项目,就使用QtCreator打开。
VS和QtCreator两种项目不要混搭,因为文本编码一混乱,程序就不知道会乱成什么样子了,不要没事找事!
那么,刚好就没事找事做了呢?
QT中完全运行正常,VS打开出现了问题
学习后总结如下:
(恰巧找事做的伙伴可以尝试)
① 建立QT项目建立时,如图设置即可。
项目建完后(编译运行前未测),再进行设置,再用VS中打开,依然出现上述问题,原因暂且未知。

② ①无法拯救时,将相关文件进行记事本打开,另存为”UTF-8”格式,重新于vs中打开即可。直接进行②也是OK的。
③ 出现中文乱码则用#pragma execution_character_set(“utf-8”)即可。
最后,敬待各位大佬补充说明,特别感谢Winland0704的资料文档!
本文记录了在VS2015中打开QT项目时遇到的C2001错误及中文乱码问题。错误源于VC编译器对UTF-8文件的误识别。解决方案包括:保持使用QTCreator或VS打开对应项目,或者通过转换文件编码或添加特定编译指令来解决。
1万+

被折叠的 条评论
为什么被折叠?



