You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下yarn运行脚本时console.log的UTF-16代理对表情显示异常

问题成因

该问题仅出现在Yarn 1.x的Windows版本中,核心原因是Yarn 1.x创建子进程时默认不继承终端的编码配置,强制使用系统默认的ANSI代码页(简体中文系统通常为936 GBK)处理输出。
你代码输出的emoji是UTF-8编码的4字节字符,Yarn会将这部分字节流按GBK规则拆分解析,无法匹配GBK编码规则的字节会被替换为乱码标识�后再输出到终端,因此哪怕终端本身支持UTF-16/UTF-8字符展示,最终拿到的也是已经损坏的编码内容。
而直接运行Node、通过npm调用脚本时,两者都会默认继承终端的编码配置,不会主动修改子进程输出的编码规则,因此emoji可以正常展示。

解决方法

  • 临时生效方案:运行Yarn命令前先执行编码切换指令,Git Bash/Windows Terminal中执行chcp 65001切换终端代码页为UTF-8,再执行yarn run start即可正常输出emoji。
  • 永久生效方案:在系统环境变量中新增两个变量LC_ALL=zh_CN.UTF-8、LANG=zh_CN.UTF-8(英文系统设置为en_US.UTF-8),重启终端后所有Yarn命令都会默认使用UTF-8编码处理输出。
  • 版本升级方案:升级到Yarn 2+(Berry)版本,该版本已经修复了Windows平台的默认编码问题,默认继承终端的编码配置,无需额外设置即可正常输出多字节字符。
  • 代码兼容方案:如果不想修改环境配置,也可以在Node脚本的最开头添加一行代码process.stdout.setEncoding('utf8'),强制标准输出使用UTF-8编码,绕过Yarn的编码转换逻辑。

内容的提问来源于stack exchange,提问作者Meldon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 18:48:02