VSCode怎么解决终端中文乱码问题_VSCode如何修改终端编码修复中文显示异常【妙招】

秋强同学_3941

秋强同学_3941

2026-03-28

1517人浏览

原创

终端中文乱码根源是windows终端默认gbk编码与工具链utf-8输出不匹配,需同步调整终端编码(chcp 65001或$outputencoding)、字体(cascadia code+微软雅黑)及启动参数,三者缺一不可。

vscode怎么解决终端中文乱码问题_vscode如何修改终端编码修复中文显示异常【妙招】

终端输出中文是 □□□ 或 ?,不是 VSCode 的错

这是终端进程(powershell.exe、cmd.exe)本身没用 UTF-8 启动,VSCode 只是照搬它的输出。Windows 中文版默认代码页是 936(GBK),而 Node.js、Python 等工具链默认按 UTF-8 解析 stdout 字节流——两边不匹配,字就塌了。

  • 先在 VS Code 终端里运行 chcp,如果输出是 活动代码页: 936,那根源就在这儿
  • 别急着改 settings.json,先验证:在终端里直接输入 echo 你好,看是否乱码;如果乱码,说明是终端层问题,不是编辑器字体或文件编码的事
  • [Console]::OutputEncoding 在 PowerShell 里只影响 .NET 控制台 API,对 node、python 进程无效;真正起作用的是 $OutputEncoding

PowerShell 终端一键切 UTF-8(推荐临时+永久双解法)

最轻量、见效最快的改法,就是让 PowerShell 主动把输出转成 UTF-8 字节流,所有子进程(比如你跑的 python app.py)都跟着受益。

  • 临时生效(当前终端会话):$OutputEncoding = [System.Text.UTF8Encoding]::new()
  • 永久生效:运行 notepad $PROFILE(若提示不存在就先 New-Item -Type File -Path $PROFILE -Force),在打开的 Microsoft.PowerShell_profile.ps1 末尾追加上面那行
  • 别写成 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8——它只管 .NET 自己的 WriteLine,管不了 Python 的 print
  • 也别设成 UTF7 或 ASCII,那是给乱码加戏

VS Code 启动终端前自动执行 chcp 65001

比改 PowerShell 变量更底层,连 C++ 的 printf 都能救回来,尤其适合你用 cmd 或旧版 PowerShell,或者不想动系统配置文件时。

VSCode
VSCode

避免常见的 VSCode 错误——设置冲突、调试器配置和扩展冲突。

下载
  • 打开 settings.json,加入这段配置:
"terminal.integrated.profiles.windows": {
  "PowerShell": {
    "source": "PowerShell",
    "args": ["-NoExit", "-Command", "chcp 65001 > $null"]
  }
}
  • -NoExit 必须加,否则终端启动完立刻退出
  • > $null 是为了隐藏那行 活动代码页: 65001 提示,不然每次开终端都闪一下
  • 改完后要关掉所有终端页签,再按 Ctrl + Shift + ` 新开一个,旧终端不会刷新
  • 字体没配对,UTF-8 也白搭

    即使编码全对,如果终端用的等宽字体(比如 Consolas、Fira Code)本身不含中文字形,VSCode fallback 行为不稳定,尤其开了连字(ligature)时容易断笔、显示方块。

    • 在设置里搜 terminal.integrated.fontFamily,填入:'Cascadia Code', 'Microsoft YaHei', monospace
    • Windows 用户务必右键终端 →「属性」→「字体」,手动选 Cascadia Code 或 Consolas(仅靠 VS Code 设置不够)
    • 别用 SimSun(宋体)当主力等宽字体,它不是为编程设计的,行高和字宽不均,长期看眼睛累
    • 改完必须关闭再重开终端,reload window 不生效

    最容易被忽略的是:终端乱码往往不是单点问题,而是编码 + 字体 + 启动参数三者没对齐。比如你设了 $OutputEncoding,但终端字体还是 Lucida Console,照样出方块;又比如你配了 chcp 65001,但 PowerShell profile 里又写了 [Console]::OutputEncoding = ...,反而互相干扰。修的时候盯住一个变量,其他先冻结。

    相关专题

    更多
    json数据格式
    json数据格式

    JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

    2023.08.07

    1995

    5

    json是什么
    json是什么

    JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.23

    2762

    1

    jquery怎么操作json
    jquery怎么操作json

    操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

    2023.10.13

    956

    3

    go语言处理json数据方法
    go语言处理json数据方法

    本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

    2025.09.10

    3119

    7

    python中print函数的用法
    python中print函数的用法

    python中print函数的语法是“print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

    2023.09.27

    2420

    5

    python print用法与作用
    python print用法与作用

    本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

    2026.02.03

    229

    24

    c语言中null和NULL的区别
    c语言中null和NULL的区别

    c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

    2023.09.22

    529

    3

    java中null的用法
    java中null的用法

    在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

    2024.03.01

    1658

    6

    printf用法大全
    printf用法大全

    php中文网为大家提供printf用法大全,以及其他printf函数的相关文章、相关下载资源以及各种相关课程,供大家免费下载体验。

    2023.06.20

    648

    5

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程