解决VScode终端中文乱码问题
看到这里我说说为什么我觉得是PowerShell的问题。(不知道你们发现没有,编码格式为GBK的cmd.exe和编码格式为UTF-8(chcp 65001)的PowerShell对编码格式为GBK的二进制文件执行输出的乱码是一样的)你们觉得是翻译过来是什么意思?我觉得Code-Runner在终端运行就是直接调用你配置的终端然后执行编译后生成的代码。注意:我说的是在VScode用Code-Runne
结论
先说结论,乱码问题要么是你的终端编码格式有问题,要么终端本身就是有问题的。
配置成终端运行
先说怎么配置成终端运行
-
文件 -> 首选项 -> 设置
-
搜索 “Run Code Configuration”
-
往下划找到Code-runner:Run In Terminal,勾选就可以了
中文乱码
再来说说中文乱码问题。如下图,因为窗口运行不能输入,所以我只是单纯输出。这时候输出是正常的,我这是默认配置。

看看终端运行。如下图出现乱码了,我配置的终端是cmd.exe,用哪个终端可以改。后面我说说怎么改终端。

所以中文乱码是什么原因呢?
没错,就是cmd.exe编码格式出了问题。把cmd.exe改成UTF-8格式就好了。
这里先叠个甲,我再说一遍我用的终端是cmd.exe,可能大家用的终端跟我不一样,这个要去配置的。不要不看自己终端就去改cmd.exe,万一你配置的是Powershell呢?
修改编码格式(永久性)
那么接下来修改cmd.exe。
win+r,输入 “regedit” 进入注册表

在路径下 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor 中的 autorun 文件数值数据中输入 "chcp 65001"

注:有的小伙伴如果注册表中没有autorun,可以在当前目录中新建字符串,填写参数仍然有效。
运行代码,如下图,乱码问题解决。

修改编码格式(暂时性)
每次运行代码之前在终端执行
chcp 65001
修改终端
再来说说怎么改终端

然后出现以下界面,如下图。用哪个终端自己选,这里我用的是Command Prompt,也就是cmd.exe。

VScode使用别的终端出现的问题
两个问题:
1.用别的终端不管怎么配置都会有乱码
2.终端还会提示shell集成无法激活
这两个问题我猜测都是终端本身的问题。
PowerShell
直接在终端运行然后出现乱码那就是终端本身的问题,要是你在VScode里使用的是这个终端(PowerShell),那不管你怎么配置都没用,因为这是终端本身的问题。
如下图,我改成了UTF-8格式还是乱码。(这里我用的是PowerShell终端)

我看了下版本,感觉是版本的问题?反正就是我的PowerShell有问题,具体问题在哪暂时还不清楚。(后续会更新?)

如下图,默认终端我改成PowerShell出现乱码(不是编码格式问题),同时提示shell集成无法激活


解决乱码问题
先说说用PowerShell怎么解决乱码问题——修改settings.json文件,修改code-runner相关配置。

然后出现以下界面,如下图。

然后在下图箭头所指位置插入“-finput-charset=UTF-8 -fexec-charset=GBK ”。如下两图,自己可以看看区别。
这段代码的意思就是把GBK格式的文件改成UTF-8格式的文件。


你看,乱码问题解决了。如下图。

shell集成无法激活
最后再说说shell集成无法激活是什么原因吧?应该是PowerShell版本太低,与VScode不太兼容的原因?后续我会更新到高版本,再来看看是否还会“shell集成无法激活”。
所以我这里的解决方案是去下载一个高版本的PowerShell。
———————————————————分割线—————————————————————
兄弟们我解决这个问题了,看看这篇文章
解决Shell集成无法激活(PowerShell)-CSDN博客
总结
看到这里我说说为什么我觉得是PowerShell的问题。
(不知道你们发现没有,编码格式为GBK的cmd.exe和编码格式为UTF-8(chcp 65001)的PowerShell对编码格式为GBK的二进制文件执行输出的乱码是一样的)

你们觉得是翻译过来是什么意思?我觉得Code-Runner在终端运行就是直接调用你配置的终端然后执行编译后生成的代码。
注意:我说的是在VScode用Code-Runner调用终端,而且是编译后生成的代码。
我们知道编译器仅仅只是将源码翻译成机器代码(也就是二进制文件)。
一个可执行程序仅仅编译可不够,还要链接、生成文件等等步骤对吧?
那么这些由谁来做呢?运行工具,VScode里就是Code-Runner,别的IDE直接集成了运行工具(比如IDEA,里面集成了专门运行Java的运行工具)这个Code-Runner可以运行多种代码,C/C++、java、python等等。
那么PowerShell在这里是干嘛呢?根据当前编码格式执行二进制文件。
先前执行GBK文件显示乱码,后来我直接把可执行文件格式改成UTF-8乱码就解决了。这一点可以证实我的猜想。
至于为什么我修改了PowerShell的编码格式还是乱码(不管是直接win+r打开PowerShell还是VScode把默认终端改成PowerShell),我说了这应该是PowerShell本身的问题。

如上图,至于为什么UTF-8编码的文件用代码页为936的cmd.exe执行为什么不会乱码?
因为UTF-8编码直接把这几个字变成了中文,然后编码格式为GBK(代码页为936)的cmd.exe看不懂这几个字,但是还是要输出,然后直接输出了。
但是用GBK编码不认识这几个字,只是一味转换成相对应的乱码,但是编码格式为UTF-8的cmd.exe认识啊,根据乱码反推出中文,然后输出。
是不是很有道理?[狗头保命]
先就这样吧。
更多推荐



所有评论(0)