问题:vscode中,基于CMakeTools编译c++的代码过程中,会出现菱形乱码,如下图所示:

1.将vscode中的默认终端改为PowerShell
ctrl+shift+P打开设置,在搜索中输入 terminal.integrated.default profile.windows ,将windows上的默认终端配置文件,修改为PowerShell,如下图所示:

2.将PowerShell的编码修改为UTF-8
PowerShell的编码默认为GBK,打开PowerShell的终端,输入 [Console]::OutputEncoding

如果 CodePage 显示 936:说明当前是 GBK 编码
如果 CodePage 显示 65001:说明当前是 UTF-8 编码
将该编码临时修改为UTF8,在PowerShell中输入,
cpp
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
检查配置文件是否存在:
cpp
Test-Path $PROFILE
返回 True:文件存在;返回 False:文件不存在
若不存在,则创建配置文件
cpp
New-Item -Path $PROFILE -Type File -Force
用记事本或者notepad++打开该文件,输入内容:

cpp
# 设置输出编码为 UTF-8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# 设置输入编码为 UTF-8
[Console]::InputEncoding = [System.Text.Encoding]::UTF8
然后在vscode的下方的终端,输入[Console]::OutputEncoding,进行测试:

3.vscode中关于encoding的两个地方的设置:
files.encoding 我设置为UTF-8
Cmake.Output Log Encoding 我设置为gbk

我看网上的设置,都是将Cmake OutputLogEncoding设置为utf8,但是我这样改了之后,编译过程中的警告全部是菱形乱码,反而将Cmake OutputLogEncoding设置为gbk,cmake输出的log是正常的。
下图是正常编译过程中的中文log:
