de中配置一下。
整个过程是这样的:
我们代码的编码是UTF-8
把UTF-8编码的代码交给mingw,它也默认当做UTF-8处理(目前为止这是正确的)
mingw处理后生成的数据还是UTF-8编码(目前为止还是正确的)
把mingw处理后的数据(UTF-8编码)给cmd(目前为止也是正确的)
cmd按GBK编码处理它(UTF-8),这时出现错误,所以出现乱码
因此有两种解决方案,一个是将vscode的编码改为gbk,一个是将命令行的编码改为utf-8。
输出编码改为gbk
编译时使用GBK编码输出,然后再让命令行去显示。已经在配置文件中设置好选项,取消注释即可。
命令行编码改为utf-8
在新版中设置添加了选项Terminal ? Integrated: Detect Locale,默认auto已经可以解决问题,但是如果不行,可以手动设置。
在 settings.json 中添加以下内容,手动设定终端编码:
"terminal.integrated.defaultProfile.windows": "PowerShell",//默认终端,可选项为PowerShell,Command Prompt
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"args": ["-NoExit", "/C", "chcp 65001"],
"icon": "terminal-powershell"
},
"Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"args": [
"/K",
"chcp 65001"
],
"icon": "terminal-cmd"
},
},
或者修改终端的编码
powershell7:
在profile.ps1中添加以下内容
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
cmd :
通过注册表修改编码:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"FontSize"=dword:00140008
"CodePage"=dword:000003a8
不使用环境变量使用code runner
目前的解决方案是在powershell的配置文件中添加以下内容:
$Env:Path += ";C:/programs/msys2/ucrt64/bin "#添加mingw的路径
使用MinGW-w64编译的文件打开失败
解决方案:将dll文件复制到可执行文件所在的目录或使用静态编译(运行时选择Release)。
CMake 编译
VScode+MSVC+CMake搭建C++开发环境
Windows下VSCode+CMake搭建开发环境
参考链接
关于UTF-8、GBK编码以及编译时charset的指定的一些总结
愿编程不再乱码(含Qt)-根因深究
mingw控制台中文乱码
Make console windows fully UTF-8 by default on Windows, in line with the behavior on Unix-like platforms
/utf-8 (Set source and execution character sets to UTF-8)
在Visual C++中使用UTF-8格式代码文件
Visual Studio C++ 默认 UTF-8 编码及 *.editorconfig 统一代码格式 - Me伟 - 博客园 (cnblogs.com)