[問題] Qt編譯問題

看板C_and_CPP (C/C++)作者 (屌炸天)時間8年前 (2017/07/03 10:57), 8年前編輯推噓2(2016)
留言18則, 5人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: Win10, Linux, ...) Qt5.6.2 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) VS 2015 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 按照網站的教學做一個push buttom 在mainwindow.pp裡增加一行setText 然後編譯就出問題 餵入的資料(Input): #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->pushButton->setText("新窗口"); } MainWindow::~MainWindow() { delete ui; } 預期的正確結果(Expected Output): 打開來視窗中間一個按鈕 然後中文是亂碼 錯誤結果(Wrong Output): D:\QT\nWindows\nWindows\mainwindow.cpp:-1: warning: C4819: 檔案含有無法在目前 字碼頁 (950) 中表示的字元。請以 Unicode 格式儲存檔案以防止資料遺失 D:\QT\nWindows\nWindows\mainwindow.cpp:9: error: C2001: 常數中包含新行字元 D:\QT\nWindows\nWindows\mainwindow.cpp:10: error: C2059: 語法錯誤: '}' 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): 教學的Qt版本是4.8.1 是因為版本的問題嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.92.60 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1499050634.A.FDC.html

07/03 12:23, , 1F
在.H加這行 #pragma execution_character_set("utf-8")
07/03 12:23, 1F

07/03 12:23, , 2F
中文會亂碼
07/03 12:23, 2F

07/04 09:27, , 3F
還沒加這行 我現在只有setText就不能編譯了
07/04 09:27, 3F

07/04 10:06, , 4F
先不要打中文試試看 然後把中文換成許功蓋 看會
07/04 10:06, 4F

07/04 10:06, , 5F
不會跳一樣的錯誤
07/04 10:06, 5F
謝謝 setText裡面改成英文就沒有問題了 但是接下來下一個問題是 在.H裡面加#pragma execution_character_set("utf-8") 或是看別的網站教的在main裡面加 QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); 都沒有辦法解決中文的問題 只要有中文就編譯不過 ※ 編輯: allssddaa (60.249.92.60), 07/04/2017 11:58:56

07/04 12:52, , 6F
你原始碼編碼也存錯了吧,要存成utf-8才對
07/04 12:52, 6F

07/05 00:54, , 7F
編譯不過應該是原始碼編碼錯誤, 上面提的都是成功執行但
07/05 00:54, 7F

07/05 00:55, , 8F
中文亂碼的解法
07/05 00:55, 8F

07/05 09:41, , 9F
不懂意思? 我存的不是UTF-8嗎 不然我存成什麼
07/05 09:41, 9F

07/05 09:43, , 10F
所謂的存原始碼編碼是指哪個動作?
07/05 09:43, 10F

07/05 13:59, , 11F
要怎麼存成正確的原始碼編碼呢?
07/05 13:59, 11F

07/05 14:30, , 12F
07/05 14:30, 12F

07/05 14:30, , 13F
我應該已經是UTF-8了?
07/05 14:30, 13F

07/05 15:39, , 14F
啊我知道是怎麼回事了, 對你的檔案是 UTF8 沒錯但 cl 吃
07/05 15:39, 14F

07/05 15:40, , 15F
不了, 因為預設的編譯模式是 UTF-16 (印象中)
07/05 15:40, 15F

07/05 15:41, , 16F
在 .pro 檔加上 QMAKE_CXXFLAGS += /utf-8 不知道能不能
07/05 15:41, 16F

07/05 15:41, , 17F
解, 手邊沒 Windows 無法試
07/05 15:41, 17F

07/05 15:43, , 18F
喔喔喔解決了耶 非常感謝 在.pro加那段就可以編譯而且沒有亂碼 請問"CL吃不了因為預設是UTF-16"是什麼意思呢? 加上那一行又是做了什麼改變呢? ※ 編輯: allssddaa (60.249.92.60), 07/05/2017 16:31:04
文章代碼(AID): #1PMRAA_S (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
文章代碼(AID): #1PMRAA_S (C_and_CPP)