1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

fix encoding of file node from binary to utf8

This commit is contained in:
Hiroyasu Nishiyama 2019-02-06 21:53:23 +09:00
parent c685a31056
commit 1db1ec7b5e
2 changed files with 25 additions and 2 deletions

View File

@ -76,7 +76,7 @@ module.exports = function(RED) {
if (typeof data === "number") { data = data.toString(); } if (typeof data === "number") { data = data.toString(); }
if ((node.appendNewline) && (!Buffer.isBuffer(data))) { data += os.EOL; } if ((node.appendNewline) && (!Buffer.isBuffer(data))) { data += os.EOL; }
if (node.overwriteFile === "true") { if (node.overwriteFile === "true") {
var wstream = fs.createWriteStream(filename, { encoding:'binary', flags:'w', autoClose:true }); var wstream = fs.createWriteStream(filename, { encoding:'utf8', flags:'w', autoClose:true });
node.wstream = wstream; node.wstream = wstream;
wstream.on("error", function(err) { wstream.on("error", function(err) {
node.error(RED._("file.errors.writefail",{error:err.toString()}),msg); node.error(RED._("file.errors.writefail",{error:err.toString()}),msg);
@ -117,7 +117,7 @@ module.exports = function(RED) {
} }
} }
if (recreateStream) { if (recreateStream) {
node.wstream = fs.createWriteStream(filename, { encoding:'binary', flags:'a', autoClose:true }); node.wstream = fs.createWriteStream(filename, { encoding:'utf8', flags:'a', autoClose:true });
node.wstream.on("open", function(fd) { node.wstream.on("open", function(fd) {
try { try {
var stat = fs.statSync(filename); var stat = fs.statSync(filename);

View File

@ -79,6 +79,29 @@ describe('file Nodes', function() {
}); });
}); });
it('should write multi-byte string to a file', function(done) {
var flow = [{id:"fileNode1", type:"file", name: "fileNode", "filename":fileToTest, "appendNewline":false, "overwriteFile":true, wires: [["helperNode1"]]},
{id:"helperNode1", type:"helper"}];
helper.load(fileNode, flow, function() {
var n1 = helper.getNode("fileNode1");
var n2 = helper.getNode("helperNode1");
n2.on("input", function(msg) {
try {
var f = fs.readFileSync(fileToTest).toString();
f.should.have.length(2);
f.should.equal("試験");
fs.unlinkSync(fileToTest);
msg.should.have.property("payload", "試験");
done();
}
catch (e) {
done(e);
}
});
n1.receive({payload:"試験"});
});
});
it('should append to a file and add newline', function(done) { it('should append to a file and add newline', function(done) {
var flow = [{id:"fileNode1", type:"file", name: "fileNode", "filename":fileToTest, "appendNewline":true, "overwriteFile":false, wires: [["helperNode1"]]}, var flow = [{id:"fileNode1", type:"file", name: "fileNode", "filename":fileToTest, "appendNewline":true, "overwriteFile":false, wires: [["helperNode1"]]},
{id:"helperNode1", type:"helper"}]; {id:"helperNode1", type:"helper"}];