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