解决Windows下VSCode控制台乱码问题

我们在Windows使用VSCode编写C/C++程序时,如果代码中的中文字符串使用的是UTF8编码,且代码内没有设置控制台的输出编码,或者编译时没有指定运行时编码(GCC可以在编译时使用-fexec-charset=GBK来指定运行时的字符串编码;clang目前只能是utf-8),则在调试或者运行时,VSCode控制台输出的中文字符可能会为乱码。

目前VSCode中微软官方出品的cppdbg引擎已经是可以正常输出UTF-8字符,不管是使用gdb还是lldb。不过cppdbg引擎使用lldb调试器时,不是直接调用的LLDB API,而是使用的lldb-milldb-mi项目已经很久没人维护了,基本上处于停滞状态。如果想要使用lldb调试器,可以使用CodeLLDB插件,不过该插件是直接使用的Windows的控制台,Windows控制台默认是使用的GBK编码,代码输出UTF8编码的字符串就会出现乱码。

为了一劳永逸地解决VSCode中控制台输出UTF8字符串时乱码的问题,可以在settings.json中添加如下配置:

"terminal.integrated.profiles.windows": {
   
    "Command Prompt": {
   
      "path": [
        "${env:windir}\\Sysnative\\cmd.exe",
        "${env:windir}\\System32\\cmd.exe"
      ],
      // CodeLLDB插件,打开此项解决中文输出乱码问题
      "args": ["/K", "chcp 65001>nul"],
      "icon": "terminal-cmd"
    }
}

即在cmd命令行后添加/K chcp 65001>nul或者/K chcp 65001,这样VSCode中启动的控制台全部会使用UTF8编码输出。

注意:这样配置后,会有点冲突的是,如果配置了shell类型的任务,则会报错

参数格式不正确 - /d

比如在tasks.json中配置如下任务:

{
   
	"version": "2.0.0",
	"tasks": [
		{
   
			"label": "echo",
			"type": "shell",
			"command": "echo Hello"
		}
	]
}

VSCode实际执行的指令为:C:\Windows\System32\cmd.exe '/K chcp 65001>nul /d /c echo Hello'

在这里插入图片描述
上述cmd命令参数含义如下:
在这里插入图片描述

此时需要关闭前面配置的/K参数。在使用Makefile Tools插件编译C/C++项目时,也需要关闭/K参数。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-22 19:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-22 19:30:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-22 19:30:03       82 阅读
  4. Python语言-面向对象

    2024-01-22 19:30:03       91 阅读

热门阅读

  1. 670. 最大交换

    2024-01-22 19:30:03       48 阅读
  2. 数据备份策略

    2024-01-22 19:30:03       67 阅读
  3. Spring SpEL在Flink中的应用-SpEL详解

    2024-01-22 19:30:03       50 阅读
  4. 图像处理工具包Pillow的使用分享

    2024-01-22 19:30:03       49 阅读
  5. 【SpringBoot3】Spring Boot 3.0 集成 Redis 缓存

    2024-01-22 19:30:03       38 阅读
  6. linux上设置自启动jar程序

    2024-01-22 19:30:03       53 阅读
  7. 使用Element-Plus 加载style

    2024-01-22 19:30:03       49 阅读
  8. 编码风格之(5)GNU软件编码风格(3)

    2024-01-22 19:30:03       45 阅读
  9. React16源码: React中的IndeterminateComponent的源码实现

    2024-01-22 19:30:03       58 阅读
  10. 让页面里的字体变清晰,变细用CSS怎么做?

    2024-01-22 19:30:03       57 阅读
  11. Webpack5入门到原理18:Plugin 原理

    2024-01-22 19:30:03       43 阅读