vscode终端中文乱码是终端进程(powershell/cmd)默认用gbk解码,而python/node.js输出utf-8字节流导致的编码错位;需配置chcp 65001、pythonioencoding=utf8、lang=zh_cn.utf-8及中文字体链,并重启终端生效。

VSCode终端中文乱码不是文件编码问题,而是终端进程(PowerShell/cmd)用GBK解码,而Python/Node.js输出UTF-8字节流导致的错位。 直接改files.encoding或右下角点UTF-8没用——那只是编辑器读文件的行为,跟终端输出完全无关。
终端里echo "你好"正常但python -c "print('你好')"是方块
说明shell本身能渲染中文,但Python启动时查GetConsoleOutputCP()返回936(GBK),就把sys.stdout.encoding设成cp936,和终端实际使用的UTF-8不匹配。
- 验证:运行
python -c "import sys; print(sys.stdout.encoding)",输出cp936就是它 - 临时修复:在终端里先执行
chcp 65001,再跑Python命令,立刻变正常 - 永久修复:在
settings.json里加这段,让每次新开终端都自动生效:"terminal.integrated.env.windows": { "PYTHONIOENCODING": "utf8" } -
PYTHONIOENCODING必须全小写utf8,UTF-8或UTF8在Windows下无效 - 如果还用Code Runner插件,得同步改它的执行命令,比如把
python改成chcp 65001 && python
PowerShell启动就乱码,chcp显示936
PowerShell 5.1默认代码页是936(GBK),但Node.js、Python等工具链默认输出UTF-8字节,终端用GBK去解,必然错位。
- 别指望
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()——它只影响.NET API,对子进程(如python)无效 - 在
settings.json里配terminal.integrated.profiles.windows,让PowerShell启动时自动切UTF-8:"terminal.integrated.profiles.windows": { "PowerShell": { "source": "PowerShell", "args": ["-NoExit", "-Command", "chcp 65001 > $null"] } } - 改完必须重启VSCode(只关终端标签页不行),新开终端后运行
chcp确认输出是65001 - 更彻底的解法是换用PowerShell 7(
pwsh.exe),它原生支持UTF-8且无BOM污染
Git Bash里中文路径显示\344\270\255\346\226\207
Git Bash本身支持UTF-8,但它依赖LANG和LC_ALL环境变量判断是否启用Unicode模式。这两个变量为空或设成C,它就退回到ASCII模式,拒绝处理中文路径。
- 在
settings.json里补上环境变量:"terminal.integrated.env.windows": { "LANG": "zh_CN.UTF-8", "LC_ALL": "zh_CN.UTF-8" } - 别只靠改
~/.bashrc——VSCode集成终端不加载你的shell配置文件 - 如果仍报错,检查Git是否启用了UTF-8路径支持:
git config --global core.quotepath false - Git Bash对
LANG大小写敏感,zh_cn.utf-8(小写)才有效,zh_CN.UTF-8可能被忽略
最易被忽略的是:Debug Console和Output面板走的是VSCode自己的通信通道,不读terminal.*配置,也不受chcp影响——它们依赖Node.js层的编码感知,而Windows上Node默认不启用UTF-8模式,需单独处理。











