From c925ae5f15fb37a9e83d1af5cc34c24fd49a6b79 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 22 Feb 2025 01:09:24 +0200 Subject: [PATCH] feat(import/single): support UTF-16 LE with BOM for markdown notes --- src/services/import/samples/UTF-16LE Text Note.md | Bin 0 -> 76 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.md diff --git a/src/services/import/samples/UTF-16LE Text Note.md b/src/services/import/samples/UTF-16LE Text Note.md new file mode 100644 index 0000000000000000000000000000000000000000..a0fec98d61b864cf262f553a82ac404bcb7c76f8 GIT binary patch literal 76 zcmezWPnki1!Gj@{AqNQaf$VZ1Sp;OKFmM530Faf)kjan-lqmtKssNG-4Cz2MsSL$H NRtAtR0%AR&S^#4j4m1D& literal 0 HcmV?d00001 diff --git a/src/services/import/single.spec.ts b/src/services/import/single.spec.ts index 6e35ebe1a..74b4746ab 100644 --- a/src/services/import/single.spec.ts +++ b/src/services/import/single.spec.ts @@ -72,4 +72,10 @@ describe("processNoteContent", () => { expect(importedNote.mime).toBe("text/html"); expect(importedNote.getContent().toString()).toBe("

Plain text goes here.

"); }); + + it("supports markdown note with UTF-16", async () => { + const { importedNote } = await testImport("UTF-16LE Text Note.md", "text/markdown"); + expect(importedNote.mime).toBe("text/html"); + expect(importedNote.getContent().toString()).toBe("

Hello world

\n

Plain text goes here.

\n"); + }); }) diff --git a/src/services/import/single.ts b/src/services/import/single.ts index f55c84bfc..85bd3d48a 100644 --- a/src/services/import/single.ts +++ b/src/services/import/single.ts @@ -127,7 +127,7 @@ function convertTextToHtml(text: string) { function importMarkdown(taskContext: TaskContext, file: File, parentNote: BNote) { const title = getNoteTitle(file.originalname, !!taskContext.data?.replaceUnderscoresWithSpaces); - const markdownContent = file.buffer.toString("utf-8"); + const markdownContent = processStringOrBuffer(file.buffer); let htmlContent = markdownService.renderToHtml(markdownContent, title); if (taskContext.data?.safeImport) {