很大可能是gcc不支持utf-8,把C代碼文件改成GBK即可。
即IDEA開發Java是如何設置全部的UTF-8,把這些UTF-8改為GBK.即可。
上面這個是最簡單的,並且我成功了,下面有一個文章你們可以試試,我沒有試成功。
https://www.jianshu.com/p/cd3a7b196ab3
正確解決 VS Code / GCC / Clang 編譯時中文亂碼問題
夏洛克聶
0.102
2020.05.04 21:38:42
字數 829
閱讀 11,850
症狀描述:
在 Windows 環境下 C/C++ 源代碼包含中文字符串時:比如 cout << "你好" <<endl; 這時 gcc、clang 都能正常編譯,但是運行時顯示亂碼。網上亂搜一通,排名靠前的解決方法基本差不多。
網上最容易搜到的方法:
—— “這是因為新建文本默認編碼為 UTF-8,把文本編碼方式更改為 ANSI 即可”
—— “改完文本編碼后,VS Code 狀態欄右下角 UTF-8 改為 GB2312”
—— “改了以后 clang 編譯會有警告怎么辦,編譯時在 clang 后面加上參數 -Wno-invalid-source-encoding 可以屏蔽警告”
對於這些方法,我總覺得不對勁:
1、為什么我在 Linux 下編譯就沒有這些問題?
2、在我的印象中 UTF-8 更新,更強,兼容全球語言字符,ANSI 則比較老舊,為什么非要回到解放前?
3、搜索 "clang 中文亂碼" 時發現這篇文章 :顫抖吧:clang中文編程,真正不可維護的代碼!!,讓我看到了 clang 的中文支持有多么強大。既然如此為什么還要去做屏蔽警告這種掩耳盜鈴的事情呢?
所以問題不應該歸於編譯器上,於是我試着搜索 “PowerShell 中文亂碼”,這才知道真正的問題出在 Windows 的控制台(CMD / PowerShell)上,並找到了正確的解決辦法。又因為這些文章的標題和 GCC / Clang / VS Code 之類的問題不對口,所以我寫這篇文章搭個橋,防止有同樣困擾的人找錯路。
正確方法:
針對 PowerShell:
1.在 Win 圖標處右鍵,打開 Windows PowerShell (管理員),執行命令:
Set-ExecutionPolicy Unrestricted
2.新建文檔 profile.ps1(這一步必須要文件管理器顯示文件擴展名,步驟自行百度)
3.用記事本編輯,粘貼以下代碼並保存:
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
4.把 profile.ps1 保存到以下路徑:
C:\Windows\System32\WindowsPowerShell\v1.0
5.完成。
檢測是否有效:
打開 PowerShell,執行:chcp
結果如下:Active code page: 65001,說明設置成功了
其它可能有用的方法:
—— 投入 Linux 的懷抱( 個人喜歡 Deepin )
—— Win10 CMD中文亂碼解決 (微軟的實驗性功能,能解決 CMD 和 PowerShell 問題,但可能會使一些老軟件出問題)
—— Win10 CMD 窗口中文亂碼永久解決方法 (修改注冊表,對 CMD 有效,對 PowerShell 無效。對於 CMD 並不建議改,改了會使一些批處理亂碼)
—— Win10 下 CMD、PowerShell 設置默認編碼為 UTF-8 (知乎的討論比較全面,基本覆蓋到了網上搜到的各種方法和問題,可惜我發現得比較晚,貼出來供大家參考