如何解决VSCode终端中文输出乱码而编辑器中文正常显示的问题

梦丽君_5365

梦丽君_5365

2026-04-07

864人浏览

原创

根本原因是windows终端编码页继承不一致,vscode终端需配置chcp 65001并设置pythonioencoding=utf-8,git bash/wsl则需配置lang=zh_cn.utf-8。

如何解决vscode终端中文输出乱码而编辑器中文正常显示的问题

为什么 VSCode 终端中文显示为方块或问号,但编辑器里一切正常

根本原因不是字体或编码设置错了,而是 Windows 默认终端(conhost)和 VSCode 内置终端(基于 Windows Terminal 或 legacy console)对 chcp 编码页的继承逻辑不一致。编辑器用 UTF-8 渲染文本,但终端启动时可能沿用了系统默认的 GBK(chcp 936),导致 Python/Node.js 等进程输出的 UTF-8 字节被当成 GBK 解码,结果就是乱码。

在 VSCode 设置中强制终端使用 UTF-8 编码

VSCode 本身支持通过配置让集成终端启动时自动切换编码页。关键不是改系统 chcp,而是让终端进程一启动就执行 chcp 65001:

  • 打开 VSCode 设置(Ctrl + ,),搜索 terminal.integrated.profiles.windows
  • 点击「在 settings.json 中编辑」,添加或修改 Windows 终端配置项
  • 确保 PowerShell 或 Command Prompt 的 args 包含 chcp 65001,例如:
"terminal.integrated.profiles.windows": {
  "PowerShell": {
    "source": "PowerShell",
    "icon": "terminal-powershell",
    "args": ["-NoExit", "-Command", "chcp 65001 > $null"]
  },
  "Command Prompt": {
    "path": ["cmd.exe"],
    "args": ["/c", "chcp 65001 > nul && cmd.exe"]
  }
}

注意:> $null(PowerShell)和 > nul(cmd)用于隐藏 Active code page: 65001 提示行,避免干扰输出。

Python 脚本输出中文仍乱码?检查 sys.stdout.encoding

即使终端已设为 UTF-8,Python 进程可能因环境变量未生效,仍用 mbcs(即系统 ANSI 编码)编码 stdout。运行以下代码验证:

VSCode
VSCode

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

下载
import sys
print(sys.stdout.encoding)

如果输出是 mbcs 而非 utf-8,说明 Python 没有正确识别终端编码。临时解决方法:

  • 在脚本开头加 import os; os.environ['PYTHONIOENCODING'] = 'utf-8'
  • 或启动时加参数:python -X utf8 script.py(Python 3.7+)
  • 更彻底:在 VSCode 的 settings.json 中设置终端环境变量:
    "terminal.integrated.env.windows": { "PYTHONIOENCODING": "utf-8" }

Git Bash / WSL 终端中文乱码的特殊处理

这类终端不走 Windows chcp,但默认 LANG 可能是 C 或 en_US.UTF-8,而中文路径/输出需要 zh_CN.UTF-8:

  • Git Bash:在 ~/.bashrc 末尾加 export LANG=zh_CN.UTF-8,然后重启终端
  • WSL:编辑 /etc/wsl.conf,添加 [boot] command="locale-gen zh_CN.UTF-8",再运行 wsl --shutdown 重启
  • VSCode 中确认 WSL 终端使用的是 bash 而非 sh(后者可能忽略 .bashrc)

Windows Terminal 自身的字体设置(如启用 Noto Sans CJK SC)会影响显示,但前提是编码已正确——先解决 chcp 和 LANG,再调字体。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
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

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

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

3896

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1235

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1578

5

热门下载

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

精品课程

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