QT 中文乱码解决汇总(QString与string、char*互转乱码)
作者:高祥xiang
在QT中使用中文时,经常会碰到论码问题,本文主要介绍了QT 中文乱码解决汇总(QString与string、char*互转乱码),需要的朋友们下面随着小编来一起学习学习吧
简述
在QT中使用中文时,经常会碰到论码问题,特别是在MSVC环境中。这里介绍的是QT5版本的,至于QT4版本的,目前已经很少用到,所以不做介绍,网上也可以找到的。下面我来总结几种解决QT中文乱码问题方法。
一、string或char* 转 QString 中文乱码解决
1、QTextCodec类
首先需要包含加上 QTextCodec 的头文件。
#include <qtextcodec.h>
然后加上转换方法。
QTextCodec *codec = QTextCodec::codecForName(“GBK”); win.setWindowTitle(codec->toUnicode(“中文窗口名称”));
2、fromLocal8Bit() 方法
此方法是 QString 类下的一个转换字节方法。
win.setWindowTitle(QString::fromLocal8Bit("中文窗口名称"));
3、QStringLiteral() 方法
win.setWindowTitle(QStringLiteral(“中文窗口名称”));
二、QString 转 string 中文乱码解决
QString 转std::string 这里有一个比较简单的方式,我封装成接口呈现:
string QStr2Str(const QString qStr) { QByteArray data = qStr.toLocal8Bit(); return string(data); }
三、QString 转 char* 中文乱码解决
先将QString转换为标准库中的string类型,然后将string转换为char* ;
std::string str = filename.toStdString(); const char* ch = str.c_str();
最后
到此这篇关于QT 中文乱码解决汇总(QString与string、char*互转乱码)的文章就介绍到这了,更多相关QT 中文乱码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!