为什么从文件中读出来的内容md5值是错的?
发布于 7个月前 作者 AntSworD 298 次浏览
    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

回到顶部