作者allssddaa (屌炸天)
看板C_and_CPP
標題[問題] Qt編譯問題
時間Mon Jul 3 10:57:11 2017
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1499050634.A.FDC.html
1F:→ MOONY135: 在.H加這行 #pragma execution_character_set("utf-8") 07/03 12:23
2F:→ MOONY135: 中文會亂碼 07/03 12:23
3F:→ allssddaa: 還沒加這行 我現在只有setText就不能編譯了 07/04 09:27
4F:推 longlongint: 先不要打中文試試看 然後把中文換成許功蓋 看會 07/04 10:06
5F:→ 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
6F:推 Davinais: 你原始碼編碼也存錯了吧,要存成utf-8才對 07/04 12:52
7F:→ uranusjr: 編譯不過應該是原始碼編碼錯誤, 上面提的都是成功執行但 07/05 00:54
8F:→ uranusjr: 中文亂碼的解法 07/05 00:55
9F:→ allssddaa: 不懂意思? 我存的不是UTF-8嗎 不然我存成什麼 07/05 09:41
10F:→ allssddaa: 所謂的存原始碼編碼是指哪個動作? 07/05 09:43
11F:→ allssddaa: 要怎麼存成正確的原始碼編碼呢? 07/05 13:59
13F:→ allssddaa: 我應該已經是UTF-8了? 07/05 14:30
14F:→ uranusjr: 啊我知道是怎麼回事了, 對你的檔案是 UTF8 沒錯但 cl 吃 07/05 15:39
15F:→ uranusjr: 不了, 因為預設的編譯模式是 UTF-16 (印象中) 07/05 15:40
16F:→ uranusjr: 在 .pro 檔加上 QMAKE_CXXFLAGS += /utf-8 不知道能不能 07/05 15:41
17F:→ uranusjr: 解, 手邊沒 Windows 無法試 07/05 15:41
喔喔喔解決了耶
非常感謝
在.pro加那段就可以編譯而且沒有亂碼
請問"CL吃不了因為預設是UTF-16"是什麼意思呢?
加上那一行又是做了什麼改變呢?
※ 編輯: allssddaa (60.249.92.60), 07/05/2017 16:31:04