为什么从文件中读出来的内容md5值是错的?
var fs = require('fs');
var crypto = require('crypto');
fs.readFile('1.txt', 'UTF-8', function(err, data) {
if (err) {
console.error(err);
} else {
var str = data.substr(0, data.length);
var str1 = '123456\n123456\n';
console.log(crypto.createHash('md5').update(data).digest('hex'));
console.log(crypto.createHash('md5').update(str).digest('hex'));
console.log(crypto.createHash('md5').update(str1).digest('hex'));
console.log('***');
console.log(data);
console.log('***');
console.log(str);
console.log('***');
console.log(str1);
console.log('***');
console.log(data === str);
console.log('***');
console.log(str1 == str);
console.log('***');
console.log(str1 === str);
console.log('***');
console.log(typeof data);
console.log('***');
console.log(typeof str);
console.log('***');
console.log(typeof str1);
console.log('***');
}
});
输出是这样: E:>node 1.js 069f06196d39d7be8e8d8195d66a141e 069f06196d39d7be8e8d8195d66a141e 89ca78c08cc4562d00e2cb2a1d67fcac *** 123456 123456
***
123456
123456
***
123456
123456
***
true
***
false
***
false
***
string
***
string
***
string
***
前面两个md5是错的,为什么从文件中读出来的内容md5值是错的?
6 回复
文本不贴不清楚 txt 的内容是\n\r(可能?)
文本就 123456 123456
可能因为读入的换行标识不一样…在linux和windows下的md5不同 windows下换行是0d0a,但是这要怎么弄
text.split(/[\r]\n/)
嗯,是这样…谢谢,就是linux下会在文件尾自己加个0a的/n换行 还要去掉最后一个/n
多谢,明白了
不要指定编码, 直接读到buffer