1. 程式人生 > 其它 >QT中文亂碼,編碼轉換方案

QT中文亂碼,編碼轉換方案

技術標籤:QTc++

常規套路

//1、main函式前面加巨集
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")

//2、main函式裡面指定編碼
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

//3、針對字串操作
QStringLiteral(“字串”);//返回一個QString的例項
QString QString::fromLocal8Bit(const char *str, int size =
-1); QString QString::fromLocal8Bit(const QByteArray &str);

指定編碼

常規套路無效時,可以嘗試指定字串的編碼,此方法在QT呼叫外部程式時很有效,比如cmd命令列、印表機驅動等。

//1、從外部程式獲取字串,轉換編碼,在Qt程式裡顯示中文
char cOutVersion[100];
//獲取版本資訊
iRet = GetDriverVersion(cOutVersion);//呼叫外部介面獲取字串
//強制轉換編碼,顯示中文
QTextCodec *gbk= QTextCodec::codecForName("GBK");
QString t_cOutVersion = gbk->toUnicode(cOutVersion);//獲取的字串可以顯示中文 //2、Qt輸出字串到外部程式,在外部程式顯示中文 QString str_printInfo = "CB532測試列印資訊"; //當前檔案是utf-8編碼,印表機介面是GBK編碼,需要轉換 QTextCodec *gbk = QTextCodec::codecForName("gbk"); QByteArray array_printInfo = gbk->fromUnicode(str_printInfo); //呼叫外部介面,列印支援中文顯示
PrintLine(array_printInfo.data());