欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

QT5对话框的中文字符串【乱码】 (error: C2001: 常量中有换行符)

发布时间:2025/3/21 c/c++ 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 QT5对话框的中文字符串【乱码】 (error: C2001: 常量中有换行符) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

问题解决:对话框的中文字符串【乱码】 (error: C2001: 常量中有换行符)
假设编译环境:QT5+vs2015

项目配置:

默认编码:UTF-8

UTF-8 BOM: 目前存在了则保留

 

如果你在使用VS2008(需要打补丁)、VS2010、VS2013、VS2015(未安装Update2),或者你的源码需要兼容这些编译器,当你在Qt5的C++源文件内使用中文时,你需按以下步骤操作。(不止是中文,其实你完全可以在代码中使用日韩法俄语等等各国语言)

1. 源文件保存为带BOM的UTF-8格式(推荐转换软件coolEdit)
   如果你要支持这些VS版本,且需要跨其他平台,保存为带BOM的UTF-8是必不可少的。

2. 而后,源码中的所有字符串常量使用 QStringLiteral 宏进行包裹,如:
   QString s1 = QStringLiteral("中国");

   但是如果,除了宽字符串外,你还需要使用窄字符串,比如
   QString s2 = tr("中国");
   QByteArray s3 = "中国";
   const char * s4 = "中国";
   edit.setText("中国");
   
   那么,你需要:
1. Qt5要求窄字符串执行字符集为 UTF8
   在包含文件或CPP文件添加下面3行代码 

    #if _MSC_VER >= 1600
    #pragma execution_character_set("utf-8")
    #endif

2. [MSVC] 如果你不在用MSVC,请跳过该步骤

如果你在使用MSVC2005或MSVC2012,请换用其他版本的MSVC
如果你在使用MSVC2008,请升级到最新的SP1,并安装 KB980263 补丁
如果你在使用MSVC2010、MSVC2013或更新版本,本步骤不需要额外操作

具体细节,请参考 http://blog.csdn.net/dbzhang800/article/details/7540905

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的QT5对话框的中文字符串【乱码】 (error: C2001: 常量中有换行符)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。