fs.readFile 返回字符串,但每个字符之间有空格并添加字符

Posted

技术标签:

【中文标题】fs.readFile 返回字符串,但每个字符之间有空格并添加字符【英文标题】:fs.readFile returning string but with white space between every character and adding characters 【发布时间】:2019-09-05 21:56:17 【问题描述】:

fs.readFile() 返回每个字符之间带有空格的字符串,并且还添加了波浪号(~) 这是转换<ApiDocument> 进入这个"~< A p i D o c u m e n t >"

我试图解析 XML 以从存储的文件中获取字符串。我想我可能把文件搞砸了。所以我创建了另一个文件,里面只有简单的文本,比如“test”,我得到了同样的症状“t e s t”

我还认为可能是因为它是一个 xml 文件,所以我将它切换到 TXT 并且仍然得到相同的东西。

我似乎不知道如何表达这个问题,因为网上似乎没有人遇到同样的问题。

我也尝试了不同的编码。

我使用的是 Node 版本 10.15.0

fs.readFile("SalesReceiptExport.xml","UTF-8", function (err, data) 
    if (err) throw err;
    console.log(data);

);

我希望它能够读取包含@​​987654324@ 的文件 并返回带有"<ApiDocument>" 的字符串 但它会变成"~ < A p i D o c u m e n t>"

【问题讨论】:

【参考方案1】:

文件是否写为 Unicode?如果您执行以下操作会发生什么:

fs.readFile("SalesReceiptExport.xml","UTF-16", function(err,data)  
   if (err) throw err;
   console.log(data);
);

创建文件时,您是否指定了编码方案,或者您可以指定编码方案吗?

【讨论】:

创建文件的时候。我没有意识到这是一个问题。非常感谢你,我变得如此沮丧。我不确定我发送的文件是如何使用 UNICODE 编码的,但我会仔细研究它。 UTF-16 对我不起作用,但如果编码正确的话,再次感谢。 它适用于我使用 MS Teams 生成的 CSV。 注意:我使用'utf16le'而不是UTF-16

以上是关于fs.readFile 返回字符串,但每个字符之间有空格并添加字符的主要内容,如果未能解决你的问题,请参考以下文章

在 Node 中使用 fs.readFile 串行读取文件?

fs.readFile() 返回未定义 [重复]

远程 fs.readFile 的问题? (在本地工作,但不在服务器上)[关闭]

ENOENT:运行 fs.readFile 时没有这样的文件或目录

使用 require vs fs.readFile 读取 json 文件内容

HTTP 状态代码 200 但页面未加载 Node.js Socket.io -- 使用 Socket.io 的 Node.js 教程,Daniel Nill,fs.readFile(),socket