1. 程式人生 > 實用技巧 >談談 Qt4 中文亂碼的解決

談談 Qt4 中文亂碼的解決

本文只描述Qt4的解決方法,Qt5沒有嘗試過,不做討論。網上關於這個話題一搜一大堆,基本無外乎字符集編碼的理論,看不明白。直接上程式碼吧!

#include "widget.h"
#include <QApplication>
#include <QTextCodec>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTextCodec::setCodecForLocale(QTextCodec::codecForName(QTextCodec::codecForLocale()
->name())); QTextCodec::setCodecForTr(QTextCodec::codecForName(QTextCodec::codecForLocale()->name())); QTextCodec::setCodecForCStrings(QTextCodec::codecForName(QTextCodec::codecForLocale()->name())); Widget w; w.show(); return a.exec(); }

一般我的專案裡在 main.cpp檔案裡都會加上這三句程式碼,中文顯示都能正常顯示。

QTextCodec :這個類提供文字編碼之間的轉換。

QTextCodec::codecForLocale()->name() :這個成員函式返回最適合此語言環境的編解碼器的指標。

QTextCodec::codecForName() : 這個成員函式返回與引數指定的名稱最匹配的編解碼器指標。如果沒有匹配的則返回 0 。

QTextCodec::setCodecForLocale / QTextCodec::setCodecForTr / QTextCodec::setCodecForCStrings : 這個成員函式設定引數指定的編解碼器。