VS2017控制台窗口输出中文时显示乱码问题修复 原因分析

[转载:原文来自--https://blog.csdn.net/weixin_39684284/article/details/79025291]

显示乱码的主要原因是因为中文在代码中的编码与控制台的编码不一致,比如代码文件的编码方式是GB2312(即GBK),而控制台编码是UTF-8时,输出中文就会产生乱码 
![中文乱码utf8

问题解决

从网上搜了一些关于怎么解决乱码问题的帖子或者blog,主要有以下几种方式,各人情况不一样,可参考

方式1

  • 在VS2017扩展和更新中下载ForceUTF8的扩展(下载安装需要重启VS2017,之后查看该扩展是否启用,如果在设置中关闭自动更新拓展的话,还需要打开该选项,再重启VS),有带bom签名的和无bom的,个人喜欢utf-8无bom,因为全平台可用,不用转码 
    utf8无bom

  • 之后在高级保存选项里,将文件保存为UTF-8无bom(65001), 
    高级保存 
    默认情况下vs2017中高级保存选项在菜单栏和工具栏的找不到的,所以首先将该选项找出来再进行操作,如下:

    • 在工具-》自定义中,选择命令标签栏,在菜单栏中选择编辑(个人习惯将高级保存选项放在编辑菜单)高级保存显示
    • 之后点击添加命令进入命令列表;在添加命令窗口,将类别列表拉到最底部,找到文件,点击后查看命令列表,拉到接近底部位置,找到高级保存选项,点击确定,之后关闭 
      命令列表
    • 在菜单栏编辑中,即可看到高级保存选项,点击后即可进行编码设置
  • 此时,可以查看windows命令窗口-》属性窗口可以看到编码为UTF8,同时,代码文件的编码格式也为UTF8(65001),理论上编码一致后,重新编译程序即可正常显示。 
    utf8

如果无法正常显示可以看看方式2,解决问题,我也是采用方式2的方式解决

方式2

  • 既然改成utf8无法正常显示,那么将编码都改为GB2312(即GBK)编码吧。
  • 在VS2017高级保存选项中,将编码改为简体中文GB2312,保存后重新编译 
    GB2312
  • 打开windows命令窗口,选择默认值(是默认值,不是属性!),将默认代码页改为936 GBK,确定,关闭窗口控制台窗口
  • 重新打开windows命令窗口,右键属性是属性,不是默认值!),查看默认代码页,如果默认代码页也是936 简体中文的话,那么ok,修改成功,运行程序即可; 
    2312
  • 如果修改了默认值后,默认代码页没有修改成功,还是之前的编码(我就是遇到了这种情况),那么就通过修改注册表的方式来手动修改为GBK的格式吧。
  • 通过regedit打开注册表,找到
HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
  • 1

注册表

  • 之后程序正常运行 
    输出

猜你喜欢

转载自blog.csdn.net/u012133341/article/details/81453987