From c411974876846a3403f8455d98fc33dd78c762a8 Mon Sep 17 00:00:00 2001 From: Matthias Osswald Date: Tue, 4 Feb 2020 16:51:02 +0100 Subject: [PATCH] [FIX] Ensure proper handling of multi-byte characters in streams The stream encoding needs to be set in order to properly handle multi-byte utf8 characters that are split between different chunks. See: https://nodejs.org/api/stream.html#stream_readable_setencoding_encoding --- lib/processors/stringReplacer.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/processors/stringReplacer.js b/lib/processors/stringReplacer.js index a18916636..4a7f09a4f 100644 --- a/lib/processors/stringReplacer.js +++ b/lib/processors/stringReplacer.js @@ -14,8 +14,9 @@ const replaceStream = require("replacestream"); */ module.exports = function({resources, options}) { return Promise.all(resources.map((resource) => { - const stream = resource.getStream() - .pipe(replaceStream(options.pattern, options.replacement)); + let stream = resource.getStream(); + stream.setEncoding("utf8"); + stream = stream.pipe(replaceStream(options.pattern, options.replacement)); resource.setStream(stream); return resource;