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

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

相关推荐
北鸟南游5 天前
Claude Code使用技巧-为Claude Code接入国产大模型
ai·ai编程·visual studio code
TUTO_TUTO6 天前
【python-词汇指标提取工具开发】自学笔记(1)-后端程序
人工智能·python·pandas·visual studio code
Clarice__6 天前
Anaconda安装、使用教程
windows·python·机器学习·conda·visual studio code
C++ 老炮儿的技术栈7 天前
CMFCEditBrowseCtrl用法一例
c语言·开发语言·c++·windows·qt·visual studio code
luoqice9 天前
彻底清除vscode注册表解决重装后无法使用问题
visual studio code
晚霞的不甘14 天前
Flutter for OpenHarmony 实战:[开发环境搭建与项目编译指南]
git·flutter·react native·react.js·elasticsearch·visual studio code
散峰而望15 天前
OJ 题目的做题模式和相关报错情况
java·c语言·数据结构·c++·vscode·算法·visual studio code
火车叼位20 天前
使ast-grep-vscode 识别Vue组件
前端·visual studio code
2501_941871451 个月前
面向分布式事务与最终一致性设计的互联网系统高可靠架构与多语言工程实践分享
intellij-idea·visual studio code
Eiceblue1 个月前
Python 实现 CSV 转 TXT 格式 (单文件 + 批量处理)
开发语言·python·visual studio code