VSCode 在 Windows 下终端中文乱码如何修改编码为 UTF-8?

文章导读
在使用 VSCode 进行开发时,有时终端输出的中文会显示为乱码,这通常是因为终端使用的编码与文件或输出程序不一致。Windows 系统默认的区域设置可能导致终端使用 GBK(代码页 936)而非 UTF-8(代码页 65001),而 VSCode 内部默认期望 UTF-8 编码。以下内容提供一套逐步排查和修改的思路,适用于大多数 Windows 环境下的 VSCode 终端中文乱码问题。
📋 目录
  1. 确认当前终端编码
  2. 系统区域设置修改(全局方案)
  3. VSCode 终端配置修改(推荐局部方案)
  4. 文件自身编码检查
  5. 常见坑说明
A A

在使用 VSCode 进行开发时,有时终端输出的中文会显示为乱码,这通常是因为终端使用的编码与文件或输出程序不一致。Windows 系统默认的区域设置可能导致终端使用 GBK(代码页 936)而非 UTF-8(代码页 65001),而 VSCode 内部默认期望 UTF-8 编码。以下内容提供一套逐步排查和修改的思路,适用于大多数 Windows 环境下的 VSCode 终端中文乱码问题。

确认当前终端编码

当VSCode终端显示中文为乱码时,首先确认当前终端的编码设置。在终端右键点击标题栏,选择“属性”,查看“选项”选项卡中的“代码页”值。常见的GBK代码页为936,UTF-8为65001。若显示为936,则说明终端默认使用GBK编码,而非VSCode期望的UTF-8。除了通过属性查看,还可以在终端中直接输入命令 chcp 并回车,输出结果会显示当前活动代码页编号。如果结果为 936,则代表 GBK 编码;结果为 65001 则代表 UTF-8。这一步是判断问题根源的起点,后续操作都基于这个确认结果。

系统区域设置修改(全局方案)

如果希望一劳永逸地让所有终端默认使用 UTF-8,可以修改 Windows 系统区域设置。打开“控制面板” > “时钟和区域” > “区域”,在“管理”选项卡中点击“更改系统区域设置”,勾选“Beta版:使用Unicode UTF-8提供全球语言支持”。重启电脑后生效。注意:此操作可能影响部分旧版程序的字符显示,需谨慎评估。实际测试中,一些不支持 UTF-8 的老旧软件(如某些中文版游戏或企业内部工具)可能会出现乱码或界面异常,因此这个方案适合在确认兼容性无问题后再采用。如果环境中有多个开发项目或多人协作,建议先在测试机或虚拟机中验证。重启后,再次打开 VSCode 终端并运行 chcp,若显示 65001 说明修改成功。

VSCode 在 Windows 下终端中文乱码如何修改编码为 UTF-8?

VSCode 终端配置修改(推荐局部方案)

如果不想修改系统设置,可以仅在 VSCode 内部强制终端使用 UTF-8。在VSCode的settings.json中添加配置:"terminal.integrated.shellArgs.windows": ["-NoExit", "-Command", "chcp 65001"]。这会让每次打开终端时自动执行chcp 65001命令,将代码页切换为UTF-8。若使用PowerShell,可改为"terminal.integrated.defaultProfile.windows": "PowerShell"并设置对应的启动参数。需要说明的是,此配置仅作用于 VSCode 自身启动的终端,不影响系统其他终端(如系统 CMD 或 PowerShell 独立窗口)。另外,如果默认终端是 PowerShell,那么使用 shellArgs 的方式可能不生效,因为 PowerShell 有自己的启动参数格式。对于 PowerShell 用户,更稳妥的方法是配置 terminal.integrated.profiles.windows,在其中指定启动命令,例如:{"PowerShell": {"source": "PowerShell", "args": ["-NoExit", "-Command", "chcp 65001"]}}。完成后重启 VSCode 并打开终端,观察 chcp 输出是否为 65001。如果依然显示 936,需要检查配置文件是否有语法错误,或者确认当前使用的终端配置文件名称是否正确。

VSCode 在 Windows 下终端中文乱码如何修改编码为 UTF-8?

文件自身编码检查

终端编码正确后,如果打开的文件本身不是 UTF-8,依然可能出现乱码。确保VSCode打开的文件本身编码为UTF-8。查看右下角编码指示器,若显示为GBK或其他编码,点击后选择“通过编码保存”,在弹出的列表中选择UTF-8。如果多人协作,建议在项目根目录添加.editorconfig文件,强制所有文件使用UTF-8编码。一个典型的 .editorconfig 内容包含 root = true[*] charset = utf-8。这样每次保存时,VSCode 会自动将文件转换为 UTF-8。需要注意的是,如果文件是 GBK 编码且包含特殊字符,直接转 UTF-8 可能导致原有字符丢失,建议先备份。对于已存在的大量 GBK 文件,可以使用命令行工具如 iconv 批量转换,但这不是本文重点。

常见坑说明

即使设置了终端代码页为65001,某些程序(如Python、Node.js)输出的中文仍可能乱码,因为它们在启动时没有读取终端编码。此时需要在程序内部指定编码,例如Python脚本开头添加# -*- coding: utf-8 -*-,或在print语句中指定encoding='utf-8'。此外,CMD和PowerShell的默认编码不同,优先使用VSCode的集成终端而非系统CMD。对于 Python 来说,即使在终端设定了 65001,如果 Python 脚本本身没有声明编码,且系统环境变量 PYTHONIOENCODING 未设置,输出仍可能乱码。建议在脚本中添加 import sys; sys.stdout.reconfigure(encoding='utf-8') 或在启动脚本前设置 set PYTHONIOENCODING=utf-8。Node.js 的情况类似,可以在代码中使用 process.stdout.setEncoding('utf8') 或者通过环境变量 NODE_OPTIONS=--utf8-output 来强制 UTF-8 输出。另一个容易被忽略的点是:如果终端当前工作目录路径中包含中文字符,某些工具(如 git)也可能会产生乱码输出。这种路径本身与终端编码无关,但输出内容可能因为路径编码不一致而显示异常。解决方法是在运行命令时使用英文路径,或者确保系统区域设置与终端的 UTF-8 一致。

VSCode 在 Windows 下终端中文乱码如何修改编码为 UTF-8?

以上步骤可以覆盖绝大多数 VSCode 终端中文乱码问题。根据你的实际开发语言和项目环境,可能需要组合使用不同方案。调整后如果问题仍然存在,请检查输出的具体程序是否有自己的编码设定(如数据库连接字符集、日志框架编码等)。