节点.js读取要字符串的文件内容会导致“??".
Node.js readFile contents to string results in "??"
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'".为什么会出现这些问号?我最初想要一个数字,但我刚刚收到消息,NaN(我猜不是数字)。所以我将缓冲区转换为字符串,并得到了这个。有什么帮助吗?
看来你不是第一个遇到这个问题的人。
基本上,您只需要执行以下操作:
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
使用bomstrip软件包。
我已经通过将文本文件保存在写字板而不是记事本中来修复它。将其另存为文本文档 - ms-dos 格式。
大多数 IDE 都支持正则表达式搜索,因此在代码库中搜索有缺陷的字符非常容易:
'uFEFF
只需将其替换为空字符串即可
相关文章:
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- Jquery scrollTop动画不工作"无法读取属性'top'无风
- 显示范围输入的值"无法读取属性'值'“为空”;
- 得到"读取ECONNRESET”;尝试POST到'graphic.facebook.com'通
- "无法读取属性'id'未定义的“;解析工厂中声明的数组时
- "未捕获的类型错误:无法读取属性'长度'“为空”;在jQuery中
- jsTree jQuery:select_node错误:"无法读取属性'obj'“未定义”;
- "未定义不是一个函数;无法读取属性'init'“未定义”;
- "未捕获的类型错误:无法读取属性'名称'未定义的“;当触发一个功能时
- backbone.js-集合视图给出"TypeError:无法读取属性'el'未定义的“;错误
- "无法't读取依赖关系”;npm错误
- "无法读取属性'选项'未定义的“;尝试更新数据网格时的EasyUI
- AngularJS:试图使用一个服务,得到错误"无法读取属性'那么'“未定义”;
- "无法读取属性'消息'未定义的“;在WebSQL错误回调中
- "TypeError:无法读取属性'应用'“未定义”;
- "无法读取属性'findDOMNode'未定义的“;当使用React小部件时
- Javascript读取“%%"两者均为“%”"和“%%”&”;
- 无法读取“”;谷歌"来自JavaScript中的对象
- 得到"无法读取属性'nodeType'“为空”;调用ko.applyBindings时