Qt12.9.2版本 解决中文乱码问题与国际化翻译冲突问题

在以前Qt版本中 解决中文乱码。 直接用QObject::tr 宏就够了或者用QTextCodec类 设置或者 QStringLiteral宏。 网上很多都用 

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); 来设置全局编码

后来随着Qt版本越来越高了,也越来越好了 这两个静态函数就没了。那怎么办?

这个问题 vc编译存在  minGW是不存在的

原因:mingw是linuxgcc g++ 一个集合编译器 linux下是没有utf-8的bom头的, 因为utf8没有字节序问题,也就不需要bom头,并且这样可以兼容ASCii码 ,
而vc默认是使用当前系统的编码(local code == GBK), 它和UTF8就冲突了,
因此, 要多一个所谓的BOM头来识别UTF8,不然vc还以为它是gbk呢

所以像VS编辑器那样处理 文件 utf-8 带签名格式,还需要在pro文件中增加

msvc:QMAKE_CXXFLAGS += -execution-charset:utf-8 或者
msvc:QMAKE_CXXFLAGS += -source-charset:utf-8 或者
QMAKE_CXXFLAGS_WARN_ON += -wd4819 或者随机组合试试看

原文博客地址:https://www.52pojie.cn/thread-1073446-1-1.html

补充:

其实这么操作,原理上是为了在程序运行使用utf-8格式,也就是说源码输入为utf-8 输出也要utf-8,不然程序就是默认按照系统里面的编码运行程序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值