关于windows系统中vscode的中文乱码问题

问题:

最近我发现在 windowsvscode 中运行 UTF-8编码C++源文件终端输出的中文会乱码

可能原因:

文件编码终端编码不一致导致的(或许更加复杂)

实验代码:

C++ 复制代码
void solve()
{
    string a; cin>>a;
    cout<<a<<endl;
 
    string b="sadas阿三发射点发";
    cout<<b<<endl;
}

实验结果 <math xmlns="http://www.w3.org/1998/Math/MathML"> → \to </math>→本地终端:

  1. 对于cmd终端 将编码改成65001(UTF-8)编码就不会乱码了

  2. 对于PowerShell终端 将编码改成65001(UTF-8)编码依旧会乱码

实验结果 <math xmlns="http://www.w3.org/1998/Math/MathML"> → \to </math>→vscode终端:

  1. 对于cmd终端vscode 会自动将编码改成65001(UTF-8)编码,并且输出不会乱码

  2. 对于PowerShell终端vscode 也会自动将编码改成65001(UTF-8)编码 ,但是输出依旧会乱码(指的是通过 .\test.exe 执行时输出的中文会乱码)。

    原因可能是PowerShell 的编码处理机制与CMD不同:

    • CMD 是传统的命令行工具,直接依赖系统代码页 chcp 设置,且对 UTF-8 的支持较为直接,设置 chcp 65001 后,CMD 会尝试将输出视为 UTF-8。
    • PowerShell 是基于 .NET 的现代终端,其输入输出编码由以下因素控制:
      • [System.Console]::OutputEncoding(输出编码)
      • [System.Console]::InputEncoding(输入编码)
      • 默认使用系统的 ANSI 编码 (如 GBK),而非完全遵循 chcp 设置。

    解决方案:修改 PowerShell 配置文件

    1. PowerShell 终端执行以下命令打开 PowerShell 配置文件:

      powershell 复制代码
      code $PROFILE
    2. 添加以下内容:

      powershell 复制代码
      # 设置 PowerShell 终端编码为 UTF-8
      
      # 控制 PowerShell 向外部程序传递数据时的编码(例如通过管道 | 或重定向 > 发送数据到其他进程),默认跟随系统区域设置(如 GBK)。
      $OutputEncoding = [System.Text.Encoding]::UTF8 
      # 控制 从控制台输入设备(如键盘)读取的文本的编码,即用户输入到 PowerShell 的字符如何被解码,默认与系统活动代码页一致(如 GBK)。
      [Console]::InputEncoding = [System.Text.Encoding]::UTF8
      # 控制 外部程序输出到 PowerShell 控制台的文本的解码方式,即外部程序(如 C++ 编译的 .exe)的输出如何被显示, 默认与系统活动代码页一致(如 GBK)。
      [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
    3. 重启 PowerShell 。

    再次尝试后发现 PowerShell 终于不乱码了!!!!!

总结:

  1. 如果想 本地终端vscode终端 中的 cmd 一直都不会乱码的话,可以直接修改注册表使得 cmd 的默认编码是 65001(UTF-8) 编码

    1. 打开注册表编辑器 :按 Win + R → 输入 regedit → 回车。

    2. 定位到以下注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage

    3. 修改 OEMCP 的值 :双击右侧的 OEMCP <math xmlns="http://www.w3.org/1998/Math/MathML"> → \to </math>→ 将数值数据从 936 改为 65001


    4. 重启电脑:修改后需重启系统才能生效。

  2. 如果想 本地终端vscode终端 中的 PowerShell 一直都不会乱码的话,可以直接 修改 PowerShell 配置文件

现在对于我个人来说乱码的问题倒是解决了,至于这样操作后会不会出现新的问题?对于其他的电脑管不管用?我也不知道,谁让我这个人满脑子只想着自己呢

相关推荐
清沫1 天前
键盘效率提升指南(VSCode+Vim+SurfingKeys)
前端·vim·visual studio code
OLong2 天前
2025年最强React插件,支持大量快捷操作
前端·react.js·visual studio code
一眼万年042 天前
每天都在使用的VS Code Copilot Chat 开源啦!
aigc·ai编程·visual studio code
pe7er12 天前
vscode插件Hybrid Mode混合模式不兼容导致vue3项目在vscode爆红、类型推导失效的解决方案
vue.js·visual studio code
是紫焅呢15 天前
I排序算法.go
开发语言·后端·算法·golang·排序算法·学习方法·visual studio code
是紫焅呢16 天前
E结构体基础.go
开发语言·后端·golang·学习方法·visual studio code
是紫焅呢16 天前
F接口基础.go
开发语言·后端·青少年编程·golang·visual studio code
攀登的牵牛花16 天前
🚀【效率利器】Spine动画瘦身秘籍:一键批量PNG To WebP,Atlas自动更新!
前端·visual studio code
是紫焅呢17 天前
C函数基础.go
开发语言·后端·青少年编程·golang·学习方法·visual studio code
是紫焅呢17 天前
D包和模块.go
开发语言·后端·golang·学习方法·visual studio code