找回密码
 立即注册
首页 资源区 代码 Windows 下 Node.js 重定向输出导致中文乱码的问题分析 ...

Windows 下 Node.js 重定向输出导致中文乱码的问题分析

役魅肋 7 天前
根本原因分析仅供参考,都是AI分析的

一、问题描述

在 Windows 环境下执行以下命令时,发现 中文输出出现乱码
  1. node client.js --code b16fcb6181383533844e5572ca9b56a8 > output.log2>&1
复制代码
但如果只重定向标准输出(stdout),则 不会出现乱码
  1. node client.js --code b16fcb6181383533844e5572ca9b56a8 > output.log
复制代码
二、现象对比

  命令 结果     > output.log 中文正常   > output.log 2>&1 中文乱码   三、根本原因分析

1. stdout 与 stderr 的编码来源不同

在 Windows 下,Node.js 的两个输出流行为不同:
  输出流 编码来源     stdout(标准输出) Node.js 内部控制,默认 UTF-8   stderr(标准错误) 直接使用 Windows 控制台代码页(通常是 GBK / CP936)   2. 2>&1做了什么?

  1. 2>&1
复制代码
表示:
stderr 重定向到 stdout
执行流程实际是:
  1. stdout → output.log   (UTF-8)
  2. stderr → stdout → output.log (GBK)
复制代码


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册