var fs = require('fs');
var myNumber = undefined;

function addOne(callback) {
  fs.readFile('./User2.txt', 'utf8', function doneReading(err, fileContents) {
    myNumber = fileContents.toString();
    callback();
  });
}

function logMyNumber() {
  console.log(myNumber);
}

addOne(logMyNumber);

user2.txt只包含一个字符“1”。
所以当我运行它时,输出是:“??1英寸。为什么会出现这些问号?我本来想要一个号码,但我刚收到消息,楠(我想不是一个号码)。所以我把缓冲区转换成一个字符串,得到了这个。有什么帮助吗?

最佳答案

这个问题似乎有问题。
基本上你只需要做如下的事情:

fs.readFile(filePath, 'utf8', function (err, fileContents) {
    // Remove BOM character if there is one at the start of the file.
    if(fileContents.charCodeAt(0) == 65279) fileContents = fileContents.substr(1);
}

在这里,您可以从该讨论中获得许多其他解决方法:
替换:
fileContents = fileContents.replace(/^\uFEFF/, '');
使用fs.readFileSync而不是fs.readFile
使用you are not the first one包。

关于javascript - Node.js readFile内容转换为字符串会导致“??”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27697902/

10-10 00:39