越南语爬行字符不会像在网络上那样显示
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)
我正在从网上抓取一些阅读材料并将它们保存为 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)