vscode终端node.js中文乱码根本原因是终端未启用utf-8编码,需同步配置terminal.integrated.profiles.windows设chcp 65001、terminal.integrated.env.windows设lang/lc_all为zh_cn.utf-8及中文字体链,并重启终端生效。

Node.js 在 VSCode 终端输出中文乱码,根本不是 Node 本身的问题,而是终端进程没用 UTF-8 编码启动,导致 process.stdout.encoding 被设为 cp936(GBK),Node 只能按这个编码写入字节——结果就是中文变 ??? 或方块。
确认终端当前 encoding 是否为 utf8
别猜,直接查。在 VSCode 集成终端里运行:
node -e "console.log(process.stdout.encoding)"
如果输出是 cp936 或 gbk,说明终端 shell 还在用 Windows 默认编码;输出 utf8 才算过关。同时补查:chcp 应返回 65001,locale(Git Bash)应显示 LANG=zh_CN.UTF-8。
PowerShell 终端必须加载 UTF-8 启动参数
VSCode 默认启动的 PowerShell 不会自动切 UTF-8,光靠手动输 chcp 65001 没用——每次新开终端都要重来。必须把编码切换嵌入启动流程:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 打开
settings.json,修改或添加terminal.integrated.profiles.windows - 确保
"PowerShell"的args包含-NoExit和-Command,例如:["-NoExit", "-Command", "chcp 65001 > $null"] - 删掉旧的
shellArgs或env中重复设置的CHCP,它们和profiles冲突 - 改完后必须关闭所有终端标签页再新建,已存在的终端进程不会刷新
process.stdout.encoding
Node.js 进程需继承正确的环境变量
即使终端已切到 UTF-8,Node 仍可能因环境变量缺失而 fallback 到系统 locale。关键变量只有两个:
-
PYTHONIOENCODING对 Node 无效,别配它 - 真正起作用的是
LC_ALL和LANG:在settings.json的terminal.integrated.env.windows里加:"LANG": "zh_CN.UTF-8", "LC_ALL": "zh_CN.UTF-8" - Git Bash 用户额外检查
~/.bashrc,删掉任何export LANG=C或export LANG=zh_CN.GBK—— 这些会覆盖 VSCode 注入的值 - 验证方式:
node -e "console.log(process.env.LANG)"应输出zh_CN.UTF-8
字体支持不到位也会假性乱码
编码全对但显示仍是小方块?那是字体问题。VSCode 终端默认字体(如 Consolas)不含中文字形,fallback 行为不可靠:
- 在设置里搜
terminal integrated font family - 填入明确支持中文的等宽字体组合,例如:
'Cascadia Code', 'Microsoft YaHei Mono', 'SimSun' - 注意单引号包裹、逗号后空格、中文字体名用全称(
Microsoft YaHei Mono比YaHei更稳) - 改完后同样要关掉所有终端再开,仅 reload 窗口不生效
最易被忽略的是:终端编码由 shell 进程自身决定,files.encoding 或主题设置完全不影响它;而 process.stdout.encoding 在 Node 进程启动瞬间就固化了,后续代码里调用 process.stdout.write() 时无法动态更改——所以修复必须落在终端启动那一刻。










