vscode终端中文乱码问题的解决方案合集c++
解决思路:
乱码的出现一般是由于编码错误。在编辑器上正确显示的中文字符,却在终端编译出现乱码,这一般是因为vscode编辑器默认编码utf-8,而终端使用了gbk编码。总之出现乱码基本就是编码没对。另外这些方法一般是在vscode集成的终端中进行调试的。(但实际上我是真的分不清那些是integrated那些是 external,反正就是在那个地方,集成在vscode上而不是额外的命令控制台窗口)
解决方法:
1.修改系统区域设置
这应该是最容易搜索到的方法。在win10系统下使用组合win+r输入control打开控制面板,依次选择时钟和区划–区域–管理–更改系统区域设置,勾选 “Beta 版:使用…” ,最后根据提示重新启动。
这个方法弊端很明显,这样修改原来使用gbk编码的文件打开就会乱码,某些游戏打字也会出现错误。
参考:https://blog.csdn.net/weixin_40040107/article/details/103721554
2.修改编辑器默认编码
这是第二种容易找到的方法。主要是将vscode编辑器的文字编码改为gbk。点击编辑器右下的UTF-8,再找到顶部搜索栏通过编码重新打开,选择 Simplified Cninese(GB 2312) 编码。
参考:https://blog.csdn.net/qq_39400113/article/details/107908848
当然也可以修改编辑器默认编码为gbk,参考下面这篇文章的第二种方法。
参考:https://blog.csdn.net/weixin_43745075/article/details/106291285
又或者你从其它地方找来的代码编码为UTF-8,那你可以试试vscode的GBKtoUTF8插件
参考:https://blog.csdn.net/sinat_27985193/article/details/105228725
3.改变vscode终端编码
在vscode终端 输入chcp 可以查看当前编码,一般powershell为UTF-8,cmd为gbk。
接着输入 chcp 65001 ,将编码改为UTF-8(因为代码为UTF-8编码)。之后就可以运行编译,链接成功的.exe文件。虽然是一次性的。
参考:https://blog.csdn.net/weixin_43745075/article/details/106291285
实际在编译成功后"shift+ctrl+c"可以唤出默认配置的终端,默认是powershell。那么按照相似的操作也可以运行程序。
ps:输入cls可以清屏,这一点cmd和powershell是一致的。
4.修改vscode终端默认编码
这个方法运行调试时在集成终端运行。代码的内容主要是修改了集成终端的编码格式。
在vscode中依次打开 文件 首选项 设置 在 setting.json 中编辑。
之后将以下代码粘贴并保存。
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell", //一般推荐使用powershell
"overrideName": true,
"args": ["-NoExit", "/c", "chcp 65001"],
"icon": "terminal-powershell",
"env": {
"TEST_VAR": "value"
}
}
},
"terminal.integrated.defaultProfile.windows": "PowerShell",
所有setting.json都是一样的,实际也只有一个setting.json。在vscode中要还原默认设置只需要删除setting.json中的内容
参考:https://blog.csdn.net/lzyws739307453/article/details/89823900
注意 如果你需要使用 tasks.json ,而且里面需要用到 “type”: “shell” ,会在终端显示这个 参数格式不正确 - -Command。我的方法是直接注释掉这一行。
参考:https://www.zhihu.com/question/318656467具体参见这个问题里"树影"答主的回答。
5.修改注册表
这个方法就比较偏了,但是能解决另一种情况。
推荐vscode C++环境配置博客 https://www.cnblogs.com/baihualiaoluan/p/10661669.html
首先如果你配置c++环境的时候是按照如上链接类似方法配置的,并且在laouch.json中有如下代码
"externalConsole":true,//修改此项,让其弹出终端
那么这个弹出的命令控制台的编码无法通过以上3,4方法改变,改cmd的注册表也不行(方法1确实可以,毕竟是全局影响)。
这时候先编译好.cpp文件, 找到对应.exe文件目录并复制 ,之后使用 win+r 组合键输入 regedit 进入注册表,打开
计算机\HKEY_CURRENT_USER\Console 目录,新增 项 x:_文件路径_执行文件名.exe,新建DWORD(32位),参数65001(在十进制下)。
这时候UTF-8的代码就可以正确运行了。
ps:另外如果要修改cmd的默认编码,一般搜索到的结果都是让添加autorun。其实可以在计算机\HKEY_CURRENT_USER\Console目录下直接新建%SystemRoot%_system32_cmd.exe项,并以相同的方式新建CodePage,来修改默认编码。这种方式的区别在于的确是默认编码,而不是自动执行命令。
参考:https://blog.csdn.net/seraph0321/article/details/86411453
6.修改tasks.json
与第5种方法情况一样,但这种方法只需要在tasks.json的args项下添加一行"-fexec-charset=gbk"即可
"args": [
"-fexec-charset=gbk",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
这个时候,虽然我的代码是UTF-8,弹出的命令提示窗口任是GBK编码,但任然正确输出了。~真正的高效,优雅。
参考:https://blog.csdn.net/weixin_43802844/article/details/111170738