1. 背景
??凡是編程軟件,特別是國(guó)外的軟件贤徒,都有或多或少的中文亂碼問(wèn)題(畢竟程序都是用英文寫的)∏酆荆現(xiàn)提出VS Code編程過(guò)程中遇到的4個(gè)中文亂碼問(wèn)題以及解決方法。
2. 問(wèn)題
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ì)保存亂碼睁壁,使其無(wú)法恢復(fù)中文。
解決方法1:點(diǎn)擊右下角中的“UTF-8”挨厚,選擇“通過(guò)編碼重新打開”堡僻,輸入“GB 2312”,選擇“Simplified Chinese(GB 2312)”即可疫剃。
解決方法2:打開“查看”>“命令面板”钉疫,輸入“setting”, 選擇“首選項(xiàng):打開設(shè)置(json)”巢价,輸入如下語(yǔ)句并保存即可牲阁。
"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"并齐,選擇”通過(guò)編碼保存“,輸入”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"食侮,選擇”通過(guò)編碼保存“,輸入”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)中文亂碼或無(wú)法輸出中文
原因:文件使用GB2312編碼地消,而非UTF-8編碼炉峰。
解決方法:點(diǎn)擊右下角的"GB2312",選擇”通過(guò)編碼保存“脉执,輸入”utf-8“疼阔,選擇”UTF-8 utf8“即可。
3. 總結(jié)
- 打開文件時(shí)半夷,設(shè)置"files.autoGuessEncoding": true令VS Code自動(dòng)選擇合適編碼方式婆廊。
- 通過(guò)命令行或運(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宾舅,可以輸出中文统阿。