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,不然程序就是默认按照系统里面的编码运行程序

你可能感兴趣的:(Qt,qt,乱码,c++)