使用nodejs的pipe遇到的一点小问题

随便发点东西就当除草。

这个东西调了我一整晚……心态爆炸

简单来讲就是,使用nodejs stream的pipe的时候,它可能会在某些地方进行编码转换,有些地方你可以手动指定为只传输二进制,但有的地方似乎不行 (也有可能是我还没找到)

总之如果没弄清楚原因,以后用pipe尽量只传输文本数据,要传二进制的话尽量用系统自带的管道。


UPD:

今天又研究了一下,如果用spawn而不是exec的话,没有这个问题,可能是因为exec会自动启动一个shell,然后shell里面的编码出了问题。

另外要注意一下,encoding:'binary'并不是真的binary,而是一种叫latin1的编码,传二进制数据的时候什么都不要设置就好了。不过这么做的话,版本不能太旧,否则可能会出问题。