为什么从文件中读出来的内容md5值是错的?
发布于 10 年前 作者 AntSworD 4406 次浏览 最后一次编辑是 8 年前
	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

回到顶部