看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
MOONY135: 在.H加這行 #pragma execution_character_set("utf-8") 07/03 12:23
MOONY135: 中文會亂碼 07/03 12:23
allssddaa: 還沒加這行 我現在只有setText就不能編譯了 07/04 09:27
longlongint: 先不要打中文試試看 然後把中文換成許功蓋 看會 07/04 10:06
longlongint: 不會跳一樣的錯誤 07/04 10:06
謝謝 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
Davinais: 你原始碼編碼也存錯了吧,要存成utf-8才對 07/04 12:52
uranusjr: 編譯不過應該是原始碼編碼錯誤, 上面提的都是成功執行但 07/05 00:54
uranusjr: 中文亂碼的解法 07/05 00:55
allssddaa: 不懂意思? 我存的不是UTF-8嗎 不然我存成什麼 07/05 09:41
allssddaa: 所謂的存原始碼編碼是指哪個動作? 07/05 09:43
allssddaa: 要怎麼存成正確的原始碼編碼呢? 07/05 13:59
allssddaa: http://imgur.com/4cYELH9是這裡嗎? 07/05 14:30
allssddaa: 我應該已經是UTF-8了? 07/05 14:30
uranusjr: 啊我知道是怎麼回事了, 對你的檔案是 UTF8 沒錯但 cl 吃 07/05 15:39
uranusjr: 不了, 因為預設的編譯模式是 UTF-16 (印象中) 07/05 15:40
uranusjr: 在 .pro 檔加上 QMAKE_CXXFLAGS += /utf-8 不知道能不能 07/05 15:41
uranusjr: 解, 手邊沒 Windows 無法試 07/05 15:41
uranusjr: 或試試 https://my.oschina.net/fanhuazi/blog/740594 07/05 15:43
喔喔喔解決了耶 非常感謝 在.pro加那段就可以編譯而且沒有亂碼 請問"CL吃不了因為預設是UTF-16"是什麼意思呢? 加上那一行又是做了什麼改變呢? ※ 編輯: allssddaa (60.249.92.60), 07/05/2017 16:31:04