• 4716阅读
  • 2回复

QT 5 中文乱码是硬伤 [复制链接]

上一主题 下一主题
离线yleesun
 

只看楼主 倒序阅读 楼主  发表于: 2015-10-24
之前QT4还可以通过

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
解决中文乱码问题,但是QT5却对以上函数中的两个已经不支持。很多人说可以用宏:QStringLiteral("中文")或者QString::fromLocal8Bit(“中文”)都没法解决问题。
有时奇数个中文报语法错误,有时偶数个中文报语法错误。
error C2001: 常量中有换行符


没有彻底的解决办法?QT5这么还不如QT4用着顺手呢?

离线yanwuyue

只看该作者 1楼 发表于: 2015-10-25
Qt就是不想让乱用QTextCodec这几个函数,下了狠招,干脆就取消,
中文乱码不能怪qt,主要是VS比较贱,而且可以说故意留下的BUG
(想不明白这的多少年,都不彻底解决,只能说故意的了),
明白这的就清楚了问题一个从VS下手而不是Qt,
我是用VS2013,其它版本也类似,但也不太一样,基本上要升级up1之类的
VS2013算支持比较好的

1.源代码必须UTF-8(这也是问题关键)
2.代码中加入
  1. #if defined(_MSC_VER) && (_MSC_VER >= 1600)
  2. #pragma execution_character_set("utf-8")
  3. #endif


其它版本,搜索Google:VSxxxx UTF-8 中文
离线liulin188

只看该作者 2楼 发表于: 2015-10-26
中文没问题,是楼主处理不好
https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
快速回复
限100 字节
 
上一个 下一个