相信大家在剛學 Qt 的時候一定遇到過
百度後,大佬給出這三行代碼
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
讓我告訴你們正確的打開方式
QT creater 下
VS下
文件-》高級保存 把文件都保存爲這個編碼
Main函數添加這兩行代碼
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
每個都文件添加
//在頭文件前面加上下面幾行代碼
#ifdef WIN32
#pragma execution_character_set("utf-8")
#endif
Qt 的整個框架都使用 UTF-16 編碼
- 合理遵循 Qt 的規則,基本不會出現字符亂碼的問題。
- 除了 const char* 的隱式轉換和 QObject::tr 的轉換之外, Qt 事實上有更一般的字符編碼轉換方式。
// 我們的源文件是 UTF-8 格式的,因此建立一個 QString 。
QString s = QString::fromUtf8(" 這是 UTF-8 的字符串 ");
// 將 QString 轉換爲 GBK 格式的 QByteArray 字符數組。
// QByteArray::data() 可以拿到 const char* 。
QByteArray gbk_s = QTextCodec::codecForName("gbk")->fromUnicode(s);
// 然後再從 GBK 字符數組轉換回 QString 。
QString s2 = QTextCodec::codecForName("gbk")->toUnicode(gbk_s);