
因windows中文版系统cmd编码默认为GBK,而vscode默认新建文件的编码为UTF-8所以会出现中文乱码情况
网上搜到的一些方案
1.勾选Beta版使用Unicode UTF-8
缺点:运行其他软件时可能出现乱码
2.将vscode默认编码方式改为GBK
缺点:在外部控制台乱码了,但是调试程序时在内部控制台仍然乱码
3.注册表编辑器
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor,双击打开autorun设置值为chcp 65001 > nul
缺点:需要代码在main函数开头再加一段system("pause");否则无效果
4.在setting.json中修改
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell",
"args": ["-NoExit", "/c", "chcp 65001", ">null"]
},
// 配置cmd
"cmd": {
"path": "cmd.exe",
"icon": "terminal-cmd",
"args": ["/K chcp 65001 >nul"]
}
再将terminal.integrated.defaultProfile.windows设为 powershell
缺点:只更改了vscode内部控制台为UTF-8编码,外部cmd仍然乱码
以上几条解决方案要么只能兼顾外部控制台或者内部控制台一边为GBK或UTF-8,要么有很大的副作用。能不能将所有控制台都显示为UTF-8编码呢?
1.代码格式设为默认UTF-8


2.设置powershell默认打开为UTF-8编码
打开cmd,右键标签点击设置,更改poweshell命令行为
powershell.exe -NoExit chcp 65001

3.设置运行时默认打开外部控制台,并设置为powershell
terminal external

我的路径为C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
4.设置内部控制台为UTF-8编码

在setting.json中修改
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell",
"args": ["-NoExit", "/c", "chcp 65001", ">null"]
},
"cmd": {
"path": "cmd.exe",
"icon": "terminal-cmd",
"args": ["/K chcp 65001 >nul"]
}
再将terminal.integrated.defaultProfile.windows设为 powershell


5.此时又发现直接打开.exe打开的cmd窗口仍为GBK格式,更改.exe打开默认为UTF-8编码

按下 win + R 键,输入 regedit 回车打开注册表编辑器(regedit)。
转到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage项。
在右侧窗格中,找到"OEMCP"和"ACP"两个键值。
双击"OEMCP"键值,修改为65001表示UTF-8编码,然后点击OK按钮保存更改。
双击"ACP"键值,修改为65001表示UTF-8编码,然后点击OK按钮保存更改。
完成,此时所有控制台终端打开均为UTF-8编码,终于舒服了。