1. 背景
??凡是編程軟件,特別是國外的軟件,都有或多或少的中文亂碼問題(畢竟程序都是用英文寫的)。現(xiàn)提出VS Code編程過程中遇到的4個(gè)中文亂碼問題以及解決方法。
2. 問題
2.1 打開文件后,中文顯示亂碼
#include <iostream>
using namespace std;
int main()
{
int sum = 0, value = 0;
//????????????????EOF??????????????????????????????????????
//?????????????ctrl+z??????
while (cin >> value) {
sum += value;
}
cout << "Sum is: " << sum << endl;
return 0;
}
注意:當(dāng)打開文件,其內(nèi)容中文亂碼時(shí),不要Ctrl+S保存文件。因?yàn)槟菢訒?huì)保存亂碼,使其無法恢復(fù)中文。
解決方法1:點(diǎn)擊右下角中的“UTF-8”,選擇“通過編碼重新打開”,輸入“GB 2312”,選擇“Simplified Chinese(GB 2312)”即可。


解決方法2:打開“查看”>“命令面板”,輸入“setting”, 選擇“首選項(xiàng):打開設(shè)置(json)”,輸入如下語句并保存即可。
"files.autoGuessEncoding": true


提示:設(shè)置完成后,若文件還是中文亂碼,關(guān)閉文件重新打開即可。
2.2 終端命令行運(yùn)行時(shí)出現(xiàn)中文亂碼
g++ 1.cpp -o 1.exe; ./1.exe
原因:在終端使用命令行運(yùn)行程序時(shí),文件為UTF-8編碼,而非GB2312編碼。
解決方法1:點(diǎn)擊右下角的"UTF-8",選擇”通過編碼保存“,輸入”GB 2312“,選擇“Simplified Chinese(GB 2312)”,將UTF-8轉(zhuǎn)換成GB 2312。


解決方法2:在命令行前面添加chcp 65001用于換碼。
chcp 65001; g++ 1.cpp -o 1.exe; ./1.exe
2.3 點(diǎn)擊運(yùn)行鍵運(yùn)行程序出現(xiàn)中文亂碼
原因:從終端可發(fā)現(xiàn),點(diǎn)擊運(yùn)行鍵運(yùn)行程序與直接用命令行運(yùn)行程序相類似,其中文亂碼也是因?yàn)槭褂肬TF-8編碼。
解決方法1:點(diǎn)擊右下角的"UTF-8",選擇”通過編碼保存“,輸入”GB 2312“,選擇“Simplified Chinese(GB 2312)”,將UTF-8轉(zhuǎn)換成GB 2312。

解決方法2:打開“查看”>“命令面板”,輸入“setting”, 選擇“首選項(xiàng):打開設(shè)置(json)”,在"code-runner.executorMap"中的“cpp”添加“chcp 65001”。

修改前:
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
修改后:
"cpp": "cd $dir && chcp 65001 && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
2.4 調(diào)試時(shí),終端出現(xiàn)中文亂碼或無法輸出中文
原因:文件使用GB2312編碼,而非UTF-8編碼。
解決方法:點(diǎn)擊右下角的"GB2312",選擇”通過編碼保存“,輸入”utf-8“,選擇”UTF-8 utf8“即可。


3. 總結(jié)
- 打開文件時(shí),設(shè)置"files.autoGuessEncoding": true令VS Code自動(dòng)選擇合適編碼方式。
- 通過命令行或運(yùn)行鍵運(yùn)行程序時(shí),若是UTF-8編碼會(huì)造成中文亂碼,需要在運(yùn)行命令中添加“chcp 65001”,或者將UTF-8編碼轉(zhuǎn)換成GB2312編碼。
- VS Code默認(rèn)編碼是UTF-8,調(diào)試時(shí)也是使用UTF-8,可以輸出中文。