【发布时间】:2016-01-23 17:17:45
【问题描述】:
我想从 zip 文件中的文件中读取数据,并将这些数据以较小的块形式发布到服务器。由于文件很大,我想在 node.js 中使用流。
我使用 yauzl 从 zip 和 readline 读取它,所以我不必自己处理行尾(这是一个 CSV 文件)。但还有一个问题:zip 文件中的数据以LATIN1 编码,我需要将其发布为UTF8。在iconv-lite 的帮助下,我可以在控制台上正确地将可读流转换为 UTF8:
rd.on('data', function(data) {
console.log(iconv.decodeStream(data, 'LATIN1'));
});
现在我的问题是我想使用readLine,它需要以下配置:
var rd = readline.createInterface({
input: readStream,
output: process.stdout,
terminal: false
});
所以我的想法是将decodeStream 和encodeStream 组合起来,这样我就可以再次获得一个流,并可以将其以正确编码的UTF8 管道传输到readline。
readStream.pipe(iconv.decodeStream('LATIN1').pipe(iconv.encodeStream('utf8'))
但我看不到如何在readline 配置中使用它,或者在我可以将其作为ìnput 提供给readline 的变量中“结束”管道。
【问题讨论】: