首页 > 编程语言 >解决 VSCode 中 C/C++ 编码乱码问题的两种方法

解决 VSCode 中 C/C++ 编码乱码问题的两种方法

时间:2024-11-11 17:46:44浏览次数:5  
标签:编码 UTF VSCode C++ 乱码 PowerShell

解决 VSCode 中 C/C++ 编码乱码问题的两种方法

在中国地区,Windows 系统中的 cmdPowerShell 默认编码是 GBK,但 VSCode 默认使用 UTF-8 编码。这种编码不一致会导致在 VSCode 终端中运行 C/C++ 程序时出现乱码。以下介绍两种方法来解决这一问题。

方法一:通过 Code Runner 插件调整编码

我们可以借助 VSCode 的 Code Runner 插件来解决编译和执行 C/C++ 代码时的编码问题。首先确保已安装 Code Runner 插件,安装完成后,即可方便地通过“Run Code”按钮或快捷键 Ctrl + Alt + N 来编译和运行代码。

配置步骤

  1. 按下 Ctrl + , 打开 VSCode 设置页面。

  2. 在设置搜索栏中输入 code runner,找到 Executor Map 设置项,选择 在 settings.json 中编辑

    演示1

  3. settings.json 文件中,加入或修改如下配置,以确保 C/C++ 代码编译和执行时使用合适的编码方式:

    "code-runner.executorMap": {
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt -finput-charset=UTF-8 -fexec-charset=GBK && .\\$fileNameWithoutExt",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -finput-charset=UTF-8 -fexec-charset=GBK && .\\$fileNameWithoutExt"
    }
    
    • -finput-charset=UTF-8 指定输入文件的编码为 UTF-8。
    • -fexec-charset=GBK 指定编译生成的可执行文件在终端中使用 GBK 编码。

    演示2

此时,运行 C/C++ 程序时,将采用 GBK 编码显示输出,避免乱码。

方法二:在 PowerShell 中调整编码

如果大家平时习惯使用 PowerShell,那么可以通过以下配置将 PowerShell 的输入输出编码调整为 UTF-8。这种方式不仅简单有效,还可以彻底解决终端中的乱码问题。

配置步骤

  1. 打开 PowerShell 配置文件 profile.ps1(如未创建则新建)。

  2. 在文件中添加以下代码:

    $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
    

    这条指令将 PowerShell 的输入和输出编码都设置为 UTF-8,确保在终端中运行程序时,不会出现编码不匹配导致的乱码问题。

演示

注意事项

  • 此配置方法仅对 PowerShell 有效,不适用于 cmd。
  • 如果切换到其他编码,请在 profile.ps1 文件中重新配置相应的编码。

总结

以上两种方法分别适用于不同的场景。如果您经常在 VSCode 中使用 Code Runner 运行代码,推荐方法一;如果习惯直接使用 PowerShell 终端,推荐方法二。根据您的实际需求选择合适的配置,便可以有效避免 C/C++ 程序的编码问题。

标签:编码,UTF,VSCode,C++,乱码,PowerShell
From: https://blog.csdn.net/2301_79518550/article/details/143691369

相关文章

  • C++数学
    前言C++算法与数据结构打开打包代码的方法兼述单元测试数论:质数、最大公约数、菲蜀定理组合数学汇总计算几何博弈论曼哈顿距离与切比雪夫距离红线是哈曼顿距离,绿线是切比雪夫距离。二维曼哈顿距离转切比雪夫距离曼哈顿距离:|x1-x2|+|y1-y2|。典型应用:某个棋子只能......
  • C++ 的“活动范围”:变量的作用域和生命周期,一次搞懂!
    在C++里,变量就像是临时开的小仓库,可以用来存放各种数据。可是,不是所有变量都可以随便在哪儿都被访问到。它们都有自己的活动范围,也就是只有在特定区域才能被找到和使用。这种活动范围叫做作用域。而生命周期则是指这些变量“活着”的时间段,等生命周期结束,变量就会被自动清......
  • ESP32开发__搭建VSCode开发环境试编译项目
    目录1.概述2.安装相关必要插件3.VSCode及相关扩展件安装3.1.VSCode3.2.ESP-IDFVisualStudioCodeExtension3.3.ConfigureESP-IDF4.Demo试运行4.1.打开工程4.2.连接设备并配置端口4.3.配置工程4.3.1. 设置“目标”芯片4.3.2.menuconfig配置工程选......
  • C++ 数据结构详解
    目录C++数据结构详解引言1.数组(Array)示例代码2.向量(Vector)示例代码3.链表(List)示例代码4.栈(Stack)示例代码5.队列(Queue)示例代码6.集合(Set)示例代码7.映射(Map)示例代码C++数据结构详解引言数据结构是计算机科学中的一个重要概念......
  • 各个语言的标准输入输出(C++,Python,Go,MATLAB)
    标准输入和输出C/C++cin,cout,getline()进行输入输出#include<bits/stdc++.h>usingnamespacestd;intmain(){//输入`1231231` inta,b,c; cin>>a>>b>>c; cout<<a<<b<<c<<endl;//输出1231231并换行(endl代表换行) //输入`......
  • C++公司人员管理系统-毕业设计源码34001
    摘  要随着信息技术的快速发展和企业规模的持续扩大,传统的手工管理方式已经无法满足现代企业对员工信息管理的需求。因此,开发一套高效、稳定且易于维护的公司人员管理系统成为了企业信息化的重要任务之一。C++作为一种成熟、高效的编程语言,以其强大的面向对象特性和广泛的......
  • 【编程语言】理解C/C++当中的指针
    指针是C/C++语言中一个非常强大且重要的概念,也是编写高效程序的基础之一。对于没有编程背景的初学者来说,理解指针可能有些难度,但通过本篇文章的介绍,相信你会对指针有一个清晰的认识。本文将从指针的基本概念、作用、代码示例、注意事项等方面,带你一步步了解指针的世界。什......
  • [C++]类和对象(上篇)
    类和对象类①类的声明与定义②成员变量的规范化1.成员变量为声明③计算类的大小1.对齐数的意义2.错题展示④成员函数的位置以及传参细节1.成员函数的位置2.传参细节this指针⑤类的6个默认成员函数1.构造函数概念特性无参构造函数与全缺省构造函数不能同时出现默......
  • 【C/C++】5.字节对齐和字节填充
    字节对齐(alignment)和字节填充(padding)是优化内存访问效率和确保数据结构正确存储的重要机制。了解字节对齐和填充的原理可以帮助我们更好地设计数据结构,并且减少因不合理的内存布局引起的性能问题或程序错误。1.字节对齐(Alignment)字节对齐是指在内存中存储数据时,将数据......
  • c++实验三
    task1:代码:button.hpp:1#pragmaonce23#include<iostream>4#include<string>56usingstd::string;7usingstd::cout;89//按钮类10classButton{11public:12Button(conststring&text);13stringget_label()......