Qt——中文乱码

under Qt  tag     Published on January 24th , 2021 at 03:09 am

产生乱码原因

Qt内部采用的全Unicode编码,这从根本上保证了多国语界面实现的正确性和便捷性

但是,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。

很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四个汉字采用的那种编码。而问题一般都出在很多用户对自己当前的编码没太多概念,于是,对于一个简单得Qt程序:

#include <QtGui/QApplication>
#include <QtGui/QLabel>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QString a= "我是汉字";
    QLabel label(a);
    label.show();
    return app.exec();
}
多数用户看到其他用户看到
ÎÒÊǺº×Öæˆ‘æ˜¯æ±‰å —

解决方案

下面的语句之一可以解决问题

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

两条指令挨个一试,确实可以解决(多数用户是第一条,其他用户是第二条)。那么,为什么会这样呢?


本文由simyng创作, 采用知识共享署名4.0 国际许可协议进行许可,转载前请务必署名
  文章最后更新时间为:January 23rd , 2021 at 07:09 pm