VSCode中C/C++編碼亂碼問題的兩種解決方法
問題
在中國地區(qū),Windows 系統(tǒng)中的 cmd
和 PowerShell
默認編碼是 GBK,但 VSCode 默認使用 UTF-8 編碼。這種編碼不一致會導致在 VSCode 終端中運行 C/C++ 程序時出現(xiàn)亂碼。以下介紹兩種方法來解決這一問題。
方法一:通過 Code Runner 插件調(diào)整編碼
我們可以借助 VSCode 的 Code Runner 插件來解決編譯和執(zhí)行 C/C++ 代碼時的編碼問題。首先確保已安裝 Code Runner 插件,安裝完成后,即可方便地通過“Run Code”按鈕或快捷鍵 Ctrl + Alt + N
來編譯和運行代碼。
配置步驟
- 按下
Ctrl + ,
打開 VSCode 設置頁面。 - 在設置搜索欄中輸入
code runner
,找到Executor Map
設置項,選擇在 settings.json 中編輯
。
- 在
settings.json
文件中,找到 “code-runner.executorMap”,修改C和C++ 的配置如下
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt -finput-charset=UTF-8 -fexec-charset=GBK && .\\$fileNameWithoutExt", "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -finput-charset=UTF-8 -fexec-charset=GBK && .\\$fileNameWithoutExt"
相比原來只是在gcc后面添加了 -finput-charset=UTF-8 -fexec-charset=GBK 意思是把UTF-8編寫的文件用GBK來進行編碼。
- -finput-charset=UTF-8 指定輸入文件的編碼為 UTF-8。
- -fexec-charset=GBK 指定編譯生成的可執(zhí)行文件在終端中使用 GBK 編碼。
此時,運行 C/C++ 程序時,將采用 GBK 編碼顯示輸出,避免亂碼。
方法二:在 PowerShell 中調(diào)整編碼
如果大家平時習慣使用 PowerShell,那么可以通過以下配置將 PowerShell 的輸入輸出編碼調(diào)整為 UTF-8。這種方式不僅簡單有效,還可以徹底解決終端中的亂碼問題。
配置步驟
打開 PowerShell 配置文件
profile.ps1
(如未創(chuàng)建則新建)。在文件中添加以下代碼:
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
這條指令將 PowerShell 的輸入和輸出編碼都設置為 UTF-8,確保在終端中運行程序時,不會出現(xiàn)編碼不匹配導致的亂碼問題。
注意事項
- 此配置方法僅對 PowerShell 有效,不適用于 cmd。
- 如果切換到其他編碼,請在
profile.ps1
文件中重新配置相應的編碼。
總結
以上兩種方法分別適用于不同的場景。如果您經(jīng)常在 VSCode 中使用 Code Runner 運行代碼,推薦方法一;如果習慣直接使用 PowerShell 終端,推薦方法二。根據(jù)您的實際需求選擇合適的配置,便可以有效避免 C/C++ 程序的編碼問題。
到此這篇關于VSCode中C/C++編碼亂碼問題的兩種解決方法的文章就介紹到這了,更多相關VSCode C/C++編碼亂碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
一篇文章徹底弄懂C++虛函數(shù)的實現(xiàn)機制
C++中的虛函數(shù)的作用主要是實現(xiàn)了多態(tài)的機制,基類定義虛函數(shù),子類可以重寫該函數(shù),在派生類中對基類定義的虛函數(shù)進行重寫時,需要在派生類中聲明該方法為虛方法,這篇文章主要給大家介紹了關于如何通過一篇文章徹底弄懂C++虛函數(shù)的實現(xiàn)機制,需要的朋友可以參考下2021-06-06C++11中l(wèi)ambda、std::function和std:bind詳解
大家都知道C++11中增加了許多的新特性,下面在這篇文中我們就來聊一下lambda表達式,閉包,std::function以及std::bind。文中介紹的很詳細,相信對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。2017-01-01