VSCode_C++_输出窗口中文乱码
C++常常要用到控制台输出一些调试信息,但是由于代码本身的编码格式与控制台所用的编码格式不一致,就会导致控制台输出乱码。基于此,可以有两种解决方案:
更改代码文件的本身编码格式(UTF-8,GB2312等)
最简单有效(建议采用这种方式)
VSCode 底部状态框内有当前文件编码格式,将其修改为GB2312即可
更改控制台的编码格式
控制台默认的编码格式可以通过cmd输入chcp查看
如下图:
更改控制台的编码格式也有两种方法一是通过在代码外部改变默认全局的控制台编码格式,另一个是在代码内部自定义编码格式。
改变默认全局的控制台编码格式,可以通过注册表进行修改或者其他方法,但是我并未得到正确有效的更改注册表的方法,建议自行尝试。验证方法的正确性很简单,修改后只要打开控制台显示下当前的编码格式即可。除此之外还有一种方法,通过区域设置来更改。可以参考这篇博客这种方法会导致其他一些文件出现乱码。
在代码内部自定义编码格式,可以通过控制台的API实现。
控制台API参考文档
测试代码如下所示(注意:此代码文件的编码格式是UTF-8,若采用GB2312的编码格式,输出结果会不同)
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
cout<<"编码字符"<<endl;
cout<<"CodePage:"<<GetConsoleOutputCP()<<endl;
SetConsoleOutputCP(65001);
cout<<"编码字符"<<endl;
cout<<"CodePage:"<<GetConsoleOutputCP()<<endl;
system("pause");
return 0;
}
输出结果