QT 中文乱码解决汇总(包括QString与string、char*互转乱码)

简述

在QT中使用中文时,经常会碰到论码问题,特别是在MSVC环境中。这里介绍的是QT5版本的,至于QT4版本的,目前已经很少用到,所以不做介绍,网上也可以找到的。下面我来总结几种解决QT中文乱码问题方法。

一、string或char* 转 QString 中文乱码解决

1、QTextCodec类(qt 文本编解码类)

首先需要包含加上 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*互转乱码)_高祥xiang的博客-CSDN博客_char转qstring乱码

  • 11
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值