1. 程式人生 > 實用技巧 >關於 UE4 (虛幻引擎4)使用VS編譯時輸出窗口出現亂碼的解決辦法

關於 UE4 (虛幻引擎4)使用VS編譯時輸出窗口出現亂碼的解決辦法

關於 UE4《虛幻引擎4》使用VS編譯時輸出窗口出現亂碼的解決辦法

  • 首先說說VS中如何啟用UTF-8編碼(但僅在VS中啟用UTF-8編碼並不能解決UE4的編譯輸出亂碼問題,請往後看):

1:

  • 如果你的原始檔中只有英文,沒有漢字,那你這個檔案本身實際上就是UTF-8格式的,什麼都不用做。
  • 如果你的原始檔中有漢字,那這個檔案通常就是GBK格式的,在VS中開啟你這個檔案,再點選選單“檔案 - xxx.cpp另存為 - 點選儲存按鈕右側的下拉箭頭 - 編碼儲存 - 選擇Unicode(UTF-8 無簽名) - 確定”,(或者選擇Unicode(UTF-8 帶簽名) ,這樣這個檔案就是UTF-8編碼格式的了。

2:

  • 如果每個檔案都像上面手工操作,太麻煩了,可以下載一個VS外掛,在VS的選單 - 工具 - 擴充套件和更新 - 聯機 - 中搜索UTF,下載Force UTF-8外掛,這樣你每次儲存檔案時會自動儲存為UTF-8格式的。

3:

在VS專案上右鍵 - 屬性 - C/C++ - 命令列 - 新增額外命令 /utf-8 (紅色部分的內容)

總結:

  • 當你在網上搜索如何在VS中使用UTF-8編碼時,通常告訴你的都是以上3個辦法,但這些辦法能真正的解決問題嗎?
  • 並不能
  • 如果在辦法1中“選擇Unicode(UTF-8 無簽名)”,此時用VS編譯程式碼時可能會提示“常量中有換行符”這樣的錯誤,為什麼呢?因為VS對NO BOM的UTF-8編碼支援不完善。
  • 如果在辦法1“選擇Unicode(UTF-8 帶簽名)”,當你要在linux下使用這些檔案時,而且使用了對“有BOM”的UTF-8支援不好的編譯器時,也會出現問題。
  • 再說辦法3的“C/C++ - 命令列 - 新增額外命令 /utf-8”,這也有問題,問題是“當代碼裡面有中文的話,除錯時會錯亂,無法定位到所執行程式碼的正確行號。”原因大致可能是“雖然原始碼編譯時是UTF8的了,但是偵錯程式仍然是按GBK格式解析的,所以除錯時程式碼行數定位會出錯”。
  • 我曾經因為要跨平臺程式設計,所以找了很久的如何在VS中使用UTF-8編碼的解決方案,但始終都沒有找到一個真正完善有用的方案。
  • 這個UTF-8編碼的問題直到win 10 出來以後,才有了一個相對完善的解決方案。
  • 在win 10 系統中,開啟控制面板 - 區域和語言 - 管理 - 選中“使用Unicode UTF-8 提供全球語言支援” - 確定。如下:在這裡插入圖片描述
  • 這樣就根治了在VS中無法真正使用UTF-8編碼的問題。編譯UE4的原始碼或專案時,輸出視窗也不會出現亂碼了。
  • 但是這樣做雖然徹底解決了VS和UTF-8的問題,卻給系統中的其它方面帶來了問題,主要是你以前儲存的一些txt文件內容變成亂碼了,以及其它一些軟體顯示也出現了亂碼。
  • TXT文件亂碼好解決,用notepad++轉換一下即可,或者用我寫好的小工具批量轉換也可以,GBK和UTF-8批量轉換工具帶原始碼 https://github.com/zhllxt/GBKUTF8Convert 而EXE介面亂碼就沒有辦法了。