越南语爬行字符不会像在网络上那样显示

Vietnamese crawled characters doesn't appear as they do on the web

我正在从网上抓取一些阅读材料并将它们保存为 utf8 txt:

  const result = await page.evaluate(() => {
    const title = document.querySelector('#chapter-title').innerText;
    const content = document.querySelector('#chapter-content').innerText;
    return title + "\n\n" + content
  })

  fs.writeFileSync(`./results/chapter${chapter}.txt`, `${result}`, 'utf8');

但有些字符(主要是重音符号)的原始形式 (HTML) 与它们在浏览器上显示的不同,弄乱了我的阅读应用程序。

下面是同一段文字的截图:第一行是抓取的结果,第二行是用浏览器打开页面select+手动复制文字:

浏览器似乎以某种方式智能地 "fixed" 那些文本并更改为字体中可用的字符。

由于我不知道到底发生了什么,我的搜索没有任何结果。

发生了什么事,我是否可以将抓取的文本格式化为可读形式?

我已经使用 String.Prototype.Normalize() 解决了这个问题。

来源 HTML 中的字符混合了 NFC 和 NFD 形式。似乎我的文本编辑器无法将具有 2 个或更多重音符号的字符组合起来,导致单独的 accents/squares。使用normalize(),嗯,将它们都归一化为NFC,解决问题。

(自答题2天内不接受,欢迎在问题上详细阐述或添加reference/comment)