QT5+MSVC2017+WIN10
QT5使用MSVC編譯UTF-8時,會編譯報錯或者運作時顯示亂碼!但是使用MinGW不會。這是因為QT5+MSVC時,編輯、編譯和運作時的編碼不一緻。有以下三種方法解決,推薦第三種。
方法一:
1、工具->選項->文本編輯器->行為->UTF-8 BOM設定成“如果編碼是UTF-8則添加”
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPBNWaOdVWvJlMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwcDO0MjMxETMwITNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2、在需要的頭檔案上加上:
#ifdef _MSC_VER
#pragma execution_character_set("UTF-8")
#endif
方法二:
1、設定是工具->選項->文本編輯器->行為->UTF-8 BOM 設定成“目前存在了則保留”
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPBNWaOdVWvJlMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwcDO0MjMxETMwITNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2、在 項目->Build&Run->相應的項目->Build->建構設定->編輯建構配置->Debug和Release->Build的步驟->qmake:…->詳情->額外的參數 添加 “QMAKE_CXXFLAGS += /utf-8”(雙引号需要一起複制)
注意:“Debug”和“release”都需要添加
方法三:
1、設定是工具->選項->文本編輯器->行為->UTF-8 BOM 設定成“目前存在了則保留”
2、在pro檔案中加入
win32-msvc* {
QMAKE_CXXFLAGS += /utf-8
}
注意:
- 1,在改變 文本編輯器 選項後,需要更改對應的檔案并儲存(右鍵點選檔案->用…打開->二進制編輯器 檢視檔案編碼)
- 2,在改變pro檔案和編譯環境後,需要對工程“重新構造”
推薦使用第三種方法。