原因
- qt create文件使用的是UTF-8编码,但MSVC生成的可执行文件的编码是windows本地的字符集如GB2312。两者不兼容出现无法编译通过或者出现乱码
- 定义奇数个中文字符时会报常量字符串中出现换行的错误(
newline in constant
),偶数个中文可以编译通过并正常显示
解决方法
- 工具-选项-文本编辑器-行为-文件编码中 设置
UTF-8 BOM
为如果编码是UTF-8则添加
- 并在任何显示定义的字符串用宏函数
QStringLiteral(str)
封装起来,需注意的是不能再使用tr()函数用于编译字符串
- 如果想使用QString的格式化功能可以再使用
QString()
继续封装QStringLiteral(str)
QStringLiteral 宏
- 使用 QStringLiteral 宏可以在编译期把代码里的常量字符串 str 直接构造为 QString 对象,于是运行时就不再需要额外的构造开销了
- 常用来解决中文乱码问题