gcc編譯C代碼后,輸出亂碼


很大可能是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 (知乎的討論比較全面,基本覆蓋到了網上搜到的各種方法和問題,可惜我發現得比較晚,貼出來供大家參考

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM