踩坑经历:
这是一个向文件中写入文字(中文,在将文件中文字读取出来的代码。读取出来的结果是符号码。
这个问题在网上找了很多的解决办法,都没有完全解决。
其实要不出现乱码,就要保持控制台编码和源代码编码相一致就可以了,当然也不排除做了其他的操作。
第一步,查看自己本机的系统控制台编码:
在系统控制台上去查看当前代码页,win+r 输入 cmd,右击控制台上边框打开属性。
可以看到本机代码页是 936,记住这个代码页。
第二步,在 visual studio 控制台中以同样的方式查看代码页:
可以看到当前的调试控制台的代码页为 65001 也就是 UTF-8编码。
这里出现了和系统控制台编码不一致的问题。
第三步,接下来检查 visual studio 对文件保存的编码格式:
可以看到文件保存的编码格式为 GB2313 (936,与系统控制台编码格式相同。
ps:如果没有这个高级保存选项可以在上边框工具中添加。
第四步,开始修改编码:
改少不改多,当然想全部改成 UTF-8 编码也可以,就是步骤多一点,下面图片 system32_cmd 就是操作系统的控制台。
选择修改 visual studio 的调试控制台。
win + r 输入 regedit ,打开注册表编辑器。
计算机\HKEY_CURRENT_USER\Console
打开这个目录,在里面找到与 visual studio 相关的选项,很好找到。
可以看到 CodePage 的十进制数值为 65001,双击打开,对其 十进制 数值进行修改,修改成系统控制台相同的代码页。
确定之后再去 vs 中测试代码。
中文正常显示。
上面的方法修改起来有点麻烦,但后面就不需要有别的操作,当然也有别的方法,例如强行指定文件执行。
使用代码,指定程序执行时使用的编码和调试窗口编码一致,也可以解决乱码问题。
#pragma execution_character_set("UTF-8")
这里的UTF-8需要修改为调试控制台的编码(代码页)
PS:当然出现乱码的也可能是其他的原因,也可能是勾选了 Beta 版本,这个选项勾选也可能会出现乱码
最后如果编码一致,且这些方法都不行,可以尝试使用旧版控制台