qt 使用msvc编译器出现中文乱码的问题

1.qt create文件使用的是UTF-8编码(英文占一个字节,汉字占三个字节),但MSVC编码是windows本地的字符集如GB2312(英文 占1字节   中文占 2字节)。两者不兼容,出现乱码。

2. vs里面的unicode字符集就是采用的utf-16(用二个字节存储一个字符)或者说是usc-2.

3.QString 内部是以 16 位的 QChar 来存储(Unicode 的一种,但不是 utf-8,即utf-16)

4.8,QString转入转出函数,即生成QString和由QString生成其他字符(如char)的函数
toUtf8是输出UTF-8编码的字符集
Local8bit是本地操作系统设置的字符集编码,一般为GB2312.

解决方案:
第一步将工具菜单-——>选项——>文本编辑器里按下图修改:

在这里插入图片描述

第二步:

下面两种办法只能2选1.切不可将两种方法混合使用

第一种办法:

使用QStringLiteral()宏或者QString::fromLocal8Bit()封装字符串。需注意的是不能再使用tr()函数用于编译字符串。

QString str = QStringLiteral("测试");

第二种办法.

强行MSVC编译器使用UTF-8编码生成可执行文件,需要在每个用到字符串的头文件和源代码前面加上

#if _MSC_VER >=1600

#pragma execution_character_set("utf-8")

#endif

这种方法可以使用tr()函数。

第三种

直接在.pro工程文件中增加msvc字符集设置
msvc{
QMAKE_CXXFLAGS += -utf-8
}

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值