在NodeJ中使用Javascript无法正确显示包含变音符号的文件名



因此,在23年没有编程之后,我决定开始学习Javascript。我正在尝试编写一个程序来读取我的音乐文件,并根据特定目录中的文件创建一个HTML页面。

它进展顺利,直到我找到包含变音符号的文件名(如é、ü、ø等(。

例如:AndréHazes变成:Andrá©Hazes

例如:Andrea Bocelli&Sarah Brightman-是时候说再见了[Con Te Partirå](单曲(变身Andrea Bocelli&Sarah Brightman-是时候说再见了〔Con Te Partiroμ€〕(单曲(

我创建的链接不再工作

我用来创建HTML语句的命令是:

<td><a href="${item.vDir}/${item.vFilename}">${item.vFilename}</a></td>

这是我用来从文件系统读取文件的代码。我使用的是Mac操作系统Catalina,所以基本上是Unix的变体。

// List all files in a directory in Node.js recursively in a synchronous fashion
var ReadDirFiles = function(pdir, pfilelist) {
files = vFileSystem.readdirSync(pdir,"utf-8");
filelist = pfilelist;
files.forEach(function(file) {
if (vFileSystem.statSync(pdir + '/' + file).isDirectory()) {
filelist = ReadDirFiles(pdir + '/' + file, filelist);
}
else {
vstats = vFileSystem.statSync(pdir + '/' + file);
// debug info
// console.log(vstats);
filelist.push({vFilename: file, vDir: pdir, vBirthtime: formatDate(vstats.birthtime), vSize: vstats.size});
}
});
return filelist;
};

这是我用来将输出写入磁盘的语句,结果发现问题出在写入语句中:

fs.writeFileSync(buildPathHtml.buildPathHtml(), html);

当输出被写回磁盘时,变音符号发生转换。

有人知道如何使用变音符号的诀窍吗?

尝试在脚本中使用编码和解码函数。在Javascript中有很多函数可以做到这一点,只需使用您需要的即可。对于完整的编码/解码,您可以在脚本中使用(或仅复制粘贴(中建议的代码https://www.strictly-software.com/htmlencode/.有一个小的编码Javascript库来完成这项工作(encoder.js(

也许您的文件系统不是基于utf8的。我在某个地方读到它是Mac的Western

最新更新