Qt——中文乱码
字数统计:247 阅读时长 ≈ 1分钟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