Problem
若想直接在Qt上打中文,常會遇到亂碼問題。嘗試了網路上蠻多方法都失敗,本文總結出解決亂碼的方法。Solution
情境1
想在 Source Code (*.cpp) 裡面寫中文;但當其顯示在UI上時,卻呈現亂碼。如:
QString newInfo("你好"); this->displayPanel->myQLabel->setText(newInfo);
解決方法請見這篇文章。
情境2
如果有一已編譯好的函示庫(假設為輸入員工ID,則該函示庫會輸出員工姓名),該函示庫的輸出型態為std::string,其編碼為BIG-5(以下皆假設在Windows作業系統下)。若欲將此型態轉為QString,則需以下面方式即可:namespace QtExtensions { QString ConvertToUTF8(const std::string& big5FormatString_) { QString result = QString::fromLocal8Bit(big5FormatString_.c_str()); return result; } }//End of namespace
而在使用時:
std::string GetStaffName(const std::string& staffID_); int main() { std::string staffNameInBig5Format = ::GetStaffName("01234567"); QString staffNameInUTF8 = QtExtensions::ConvertToUTF8(staffNameInBig5Format); staffInfoWindow.SetStaffName(staffNameInUTF8); }