❶ 如何在QT中顯示中文字元
跟Qt關系不大,這和你源文件編碼格式和編譯器有關系。
可以給你個建議把上面的程序改成Qt版本的, 哈哈。步驟如下~
1 是用qtcreator
2 如果是, 檢查
工具--選項--文本編輯器--行為 選項卡下的File Encodings 中,default Encoding下拉選框里沒有中文編碼(gbk、gb2132或gb18030等)。我這里是system
3 在程序里
int main(xxxx)
{
QApplication app(xxxx);
QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));
qDebug() << QObject::tr("中文");
//記得中文用QObject::tr()包裹起來,這樣就可以顯示中文了。
app.exec();
}
❷ Ubuntu安裝Qt後,編程出來的界面很奇怪,並且中文不能顯示
中文問題:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
顯示問題:
這是ubuntu的unity桌面。你的桌面環境是什麼,就會顯示什麼。
你可以換成gnome桌面或者kde來改善一下。
❸ Qt中文亂碼問題怎麼解決
(1)、中文編碼一律使用QString::fromLocal8Bit()介面。
原因:需要支持QT4版本。QStringLiteral()方法也可取,但是它只支持QT5版本,如果沒有版本問題,可以使用。
(2)、CPP等文件編碼一律使用UTF8—BOM格式。
原因1:UTF8-無BOM在使用window編譯器cl中編譯會失敗,當然除非你Windows中使用QT的Mingw版本編譯開發。
原因2:不使用GBK的文件編碼是為了更容易的兼容到linux版本與windows中,否則你需要改QtCreate的編碼環境與linux的系統字元環境。
❹ qt編譯exe時中文字元異常
由於你有你自己的C文件,所以沒辦法給你編譯:QString不知道你是封裝了CString 還是string。
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString temp = "i love china.";
int lenn = temp.length();
cout << temp.toStdString().c_str() << endl;
cout << lenn << endl;//長度23 應該是13吧
string st = temp.toStdString().c_str();
cout << st <<"\t" << st.length() << endl;
const char *ct_2 = temp.toAscii().constData();
//這里ct_2 沒有分配空間,這里運行應該會出錯的,
//試試這樣 ct_2 = new char[st.length() +1];
//或者ct_2 = (char*)malloc((st.length()+1)*sizeof(char))
//這個用法是從書上看來的,可是運行時
//ct_2字元串變成亂碼,長度變成25
int len = strlen(ct_2);
cout << len << endl;
cout << ct_2 << endl;
char * ct_1 = new char(st.length()+1);
strcpy_s(ct_1, st.length()+1, st.c_str());
cout << ct_1 << endl;
cout << strlen(ct_1) << endl;//返回時程序出錯,內存泄露了
//嗎?那麼如何把string 變成char 呢?
//在程序結束的時候,記得 把if(ct_1) delete ct_1;
//string 變char 可以用下標遍歷string的每一個字元 然後賦值給char[i]
return a.exec();
}
如果是string的話,string有at函數
你可以轉換
string temp = "i love china.";
char str[40];
char*p;
int i=0;
for(p=str;i<temp.length();i++,p++)
{
*p = temp.at(i);
}
*p = '\0';
這樣str就是char數組型了。
❺ qt無法正常輸出中文怎麼辦
第一種情況的解決辦法:
首先,在Qt Creator中點擊菜單「編輯」-「Select Encoding...」。
然後,在彈出的文本編輯窗口中選擇「UTF-8」,再點擊「按編碼重新載入」。
這時,代碼編輯器中的文本就會恢復正常顯示了。
第二種情況的解決辦法:
先點擊菜單「工具」-「選項」。
在選項窗口中,在左側切換到「文本編輯器」,再在右側選中「行為」選項卡,最後將默認編輯改為「UTF-8」,將UTF-8 BOM改為「目前存在了則保留」,再點擊「OK」關閉窗口。
現在,重新編譯運行程序,就會發現已經能夠正常顯示了。
第三種情況在實際操作中極少發生,多半與當前系統出現故障有關。如果確信當前系統沒有問題,則有可能是Qt本身安裝出錯,建議卸載Qt所有組件後重裝。
❻ 為什麼下載的Qt編譯器,中文界面顯示不全,換成英文又可以用的是Windows系統,急!
既然是中文界面顯示不全,應該是字體不完全引起的,你可以下載一些字體資料安裝上就可以了。
❼ Qt 開發,中文顯示亂碼。請看代碼之後再下結論
QT默認用的和你編碼不一樣,用utf8要改qt的環境設置,或者試試下面的。
QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk"));//設置中文字體編碼
❽ 使用vs2013編譯qt工程,qdebug出的中文變成這樣了
qDebug() <<QObject::tr("好多");
這樣用就可以不出亂碼了。
直接寫 qDebug()<<"好多";的話我也是亂碼
差點忘了。我這邊編碼方式是"utf-8".即
QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));
確切地說是工具-》選項-》文件編碼里的默認編碼要支持中文的。然後寫成一致的就不會亂碼了。請給分。謝謝
❾ QT發布程序後中文顯示亂碼的問題
QApplication::addLibraryPath("./plugins");
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
在main函數里的QApplication a(argc, argv)這行的下面加入以上代碼。注意加上頭文件