diff --git a/packages/nodes-base/nodes/SpreadsheetFile/test/SpreadsheetFile.test.ts b/packages/nodes-base/nodes/SpreadsheetFile/test/SpreadsheetFile.test.ts index 55e64e2e23..f4779fb77e 100644 --- a/packages/nodes-base/nodes/SpreadsheetFile/test/SpreadsheetFile.test.ts +++ b/packages/nodes-base/nodes/SpreadsheetFile/test/SpreadsheetFile.test.ts @@ -178,6 +178,22 @@ describe('Execute Spreadsheet File Node', () => { }, }, }, + { + description: 'execute utf8.json', + input: { + workflowData: loadWorkflow('workflow.utf8.json', 'utf8.csv'), + }, + output: { + nodeData: { + 'Parse UTF8 v1': [ + [{ json: { A: 1, B: '株式会社', C: 3 } }, { json: { A: 4, B: 5, C: '🐛' } }], + ], + 'Parse UTF8 v2': [ + [{ json: { A: '1', B: '株式会社', C: '3' } }, { json: { A: '4', B: '5', C: '🐛' } }], + ], + }, + }, + }, ]; const nodeTypes = Helpers.setup(tests); diff --git a/packages/nodes-base/nodes/SpreadsheetFile/test/utf8.csv b/packages/nodes-base/nodes/SpreadsheetFile/test/utf8.csv new file mode 100644 index 0000000000..4ea2755e56 --- /dev/null +++ b/packages/nodes-base/nodes/SpreadsheetFile/test/utf8.csv @@ -0,0 +1,3 @@ +A,B,C +1,株式会社,3 +4,5,🐛 diff --git a/packages/nodes-base/nodes/SpreadsheetFile/test/workflow.utf8.json b/packages/nodes-base/nodes/SpreadsheetFile/test/workflow.utf8.json new file mode 100644 index 0000000000..de88e69319 --- /dev/null +++ b/packages/nodes-base/nodes/SpreadsheetFile/test/workflow.utf8.json @@ -0,0 +1,91 @@ +{ + "meta": { + "instanceId": "78577815012af39cf16dad7a787b0898c42fb7514b8a7f99b2136862c2af502c" + }, + "nodes": [ + { + "parameters": {}, + "id": "2130ab19-2efb-4217-b234-f8607d4122cc", + "name": "When clicking \"Execute Workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 260, + 460 + ] + }, + { + "parameters": { + "options": { + "readAsString": true + } + }, + "id": "68e03042-aa27-43db-bfec-3c4fe07ce9f6", + "name": "Parse UTF8 v1", + "type": "n8n-nodes-base.spreadsheetFile", + "typeVersion": 1, + "position": [ + 760, + 360 + ] + }, + { + "parameters": { + "fileFormat": "csv", + "options": { + "readAsString": true + } + }, + "id": "6a8b7ee9-5d14-4b67-b7cc-afee6bcc1fa6", + "name": "Parse UTF8 v2", + "type": "n8n-nodes-base.spreadsheetFile", + "typeVersion": 2, + "position": [ + 760, + 560 + ] + }, + { + "parameters": { + "fileSelector": "utf8.csv" + }, + "id": "623ea890-8882-4273-973e-834652d823b5", + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFiles", + "typeVersion": 1, + "position": [ + 480, + 460 + ] + } + ], + "connections": { + "When clicking \"Execute Workflow\"": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "Parse UTF8 v1", + "type": "main", + "index": 0 + }, + { + "node": "Parse UTF8 v2", + "type": "main", + "index": 0 + } + ] + ] + } + } +} diff --git a/packages/nodes-base/nodes/SpreadsheetFile/v1/SpreadsheetFileV1.node.ts b/packages/nodes-base/nodes/SpreadsheetFile/v1/SpreadsheetFileV1.node.ts index 312116e4a1..fa375859f7 100644 --- a/packages/nodes-base/nodes/SpreadsheetFile/v1/SpreadsheetFileV1.node.ts +++ b/packages/nodes-base/nodes/SpreadsheetFile/v1/SpreadsheetFileV1.node.ts @@ -77,6 +77,7 @@ export class SpreadsheetFileV1 implements INodeType { if (binaryData.id) { const binaryPath = this.helpers.getBinaryPath(binaryData.id); + xlsxOptions.codepage = 65001; // utf8 codepage workbook = xlsxReadFile(binaryPath, xlsxOptions); } else { const binaryDataBuffer = Buffer.from(binaryData.data, BINARY_ENCODING);