关于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 配置文件

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

相关推荐
2501_941871456 天前
面向分布式事务与最终一致性设计的互联网系统高可靠架构与多语言工程实践分享
intellij-idea·visual studio code
Eiceblue7 天前
Python 实现 CSV 转 TXT 格式 (单文件 + 批量处理)
开发语言·python·visual studio code
Data吴彦祖12 天前
Mac上安装Visual Studio Code教程
c语言·macos·visual studio code
前端开发爱好者15 天前
VSCode 重磅更新!要收费了?
前端·javascript·visual studio code
Eiceblue16 天前
将 Python 列表导出为 Excel 文件:一维、二维、字典列表
开发语言·python·excel·visual studio code
深兰科技17 天前
深兰科技入选“2025中国新经济30强(行业之星)”,人工智能产业化能力获认可
人工智能·windows·ci/cd·phpstorm·visual studio code·深兰科技·gyic2025
user2975258761218 天前
AI实践:结合LangChain实现一个自动生成项目README的VSCode插件
langchain·node.js·visual studio code
切糕师学AI21 天前
使用 VS Code 开发 C# 程序时,如何配置 launch.json
vscode·c#·visual studio code
草帽lufei25 天前
VSCode+PicGo实现Markdown图床自动同步
markdown·visual studio code
掘金安东尼1 个月前
VSCode V1.107 发布(2025 年 11 月)
前端·visual studio code