在vscode(在cmd.exe也会)中有时候编译输出含有中文的内容时,在输出界面显示的是乱码.

原因:我们需要传递给计算机的所有信息都会转换成0 1表示的二进制数字流,经过CPU处理后再输出给相应的程序,程序再把这些二进制数字流翻译成方便人读懂的各种语言,因此输入和输出两个方向存在步骤:编码和译码,对字符处理的编码规则成为字符集,常见的有ASCII,UTF8等,不同的字符集下,一个字符对应的二进制数字不同,因此如果在A程序中用1编码规则输入字符,经CPU处理后在B程序中用2编码规则输出,由于1编码规则和2编码规则不同,在输出程序中就会显示乱码而不是你在输入程序中输入的内容,只有输入和输出程序采用相同的编码才会得到相同的输出。

解决:首先确定自己在编辑某个文件时输入的中文是采用哪种编码,在vscode中可以在右下角状态栏查看,如下图为GBK编码,vscode默认为UTF8,

 vscode可以在设置里查看和配置(搜索栏输入encoding快速查找到该配置项),如下图:

 上述只是输入采用的字符集编码,对输出而言,在Windows下,可以通过右键查看cmd.exe的属性查看其显示的编码字符集,如下图:

 只有当输入和输出的编码字符集相同时,才不会输出乱码。

另外在vscode的输出面板,默认采用的是UTF8的字符编码,目前还不知道怎么设置输出面板的字符编码。而终端面板和cmd.exe的字符编码一样,默认都是用GBK字符编码,所以如果你采用的是GBK编码输入,调试时如果配置在终端输出结果,不会出现乱码,而如果配置在输出面板输出运行结果,则会出现乱码,runcode插件默认在输出面板输出程序运行结果,这种情况下解决方法要么配置runcode插件的输出结果在终端输出,方法见下图,要么修改cmd.exe的字符编码为UTF8,方法请网上查询。

注1:vscode的terminal使用和cmd一样的编码字符集;

注2:vscode下修改了配置后使用run code运行程序还是乱码,可能是你在编辑该文件时使用的是另一种字符集,需要重新用配置好的字符集编码重新输入你的中文内容。

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐