天天看點

QT 中文亂碼解決彙總(包括QString與string、char*互轉亂碼)簡述一、string或char* 轉 QString 中文亂碼解決二、QString 轉 string 中文亂碼解決三、QString 轉 char* 中文亂碼解決最後

簡述

在QT中使用中文時,經常會碰到論碼問題,特别是在MSVC環境中。這裡介紹的是QT5版本的,至于QT4版本的,目前已經很少用到,是以不做介紹,網上也可以找到的。下面我來總結幾種解決QT中文亂碼問題方法。

一、string或char* 轉 QString 中文亂碼解決

1、QTextCodec類

  • 首先需要包含加上 QT

    extCodec 的頭檔案。

#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();
           

最後

如果有朋友知道更多的解決中文亂碼問題方法,歡迎留言交流!

繼續閱讀