From 77ee7f96c1f8f976a2ed9b163d6158d26b380fa5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 22 Feb 2025 01:06:25 +0200 Subject: [PATCH] feat(import/single): support UTF-16 LE with BOM for text notes --- src/services/import/samples/UTF-16LE Text Note.txt | Bin 0 -> 46 bytes src/services/import/single.spec.ts | 6 ++++++ src/services/import/single.ts | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 src/services/import/samples/UTF-16LE Text Note.txt diff --git a/src/services/import/samples/UTF-16LE Text Note.txt b/src/services/import/samples/UTF-16LE Text Note.txt new file mode 100644 index 0000000000000000000000000000000000000000..c76e1ddd765fdb79d94c6fd718927a5a352d4607 GIT binary patch literal 46 ucmezWFMuJ3A(0`IA&)_Up@boop#n%MFr+i&1KGtuRtAtR0%AP|E(QP-{RyD} literal 0 HcmV?d00001 diff --git a/src/services/import/single.spec.ts b/src/services/import/single.spec.ts index f4e0cff11..6e35ebe1a 100644 --- a/src/services/import/single.spec.ts +++ b/src/services/import/single.spec.ts @@ -66,4 +66,10 @@ describe("processNoteContent", () => { expect(importedNote.mime).toBe("application/json"); expect(importedNote.getContent().toString()).toStrictEqual(stripBom(buffer.toString("utf-16le"))); }); + + it("supports plain text note with UTF-16", async () => { + const { importedNote } = await testImport("UTF-16LE Text Note.txt", "text/plain"); + expect(importedNote.mime).toBe("text/html"); + expect(importedNote.getContent().toString()).toBe("

Plain text goes here.

"); + }); }) diff --git a/src/services/import/single.ts b/src/services/import/single.ts index f9b96cfcd..f55c84bfc 100644 --- a/src/services/import/single.ts +++ b/src/services/import/single.ts @@ -91,7 +91,7 @@ function importCodeNote(taskContext: TaskContext, file: File, parentNote: BNote) function importPlainText(taskContext: TaskContext, file: File, parentNote: BNote) { const title = getNoteTitle(file.originalname, !!taskContext.data?.replaceUnderscoresWithSpaces); - const plainTextContent = file.buffer.toString("utf-8"); + const plainTextContent = processStringOrBuffer(file.buffer); const htmlContent = convertTextToHtml(plainTextContent); const { note } = noteService.createNewNote({