为什么Nodeencryption为相同的string返回不同的值?

我正在尝试运行这个程序:

var crypto = require('crypto'); var a = crypto.createHash('md5').update('89Zr-J591').digest('hex'); var name = '89Zr−J591'; var b = crypto.createHash('md5').update(name).digest('hex'); console.log(a); //c6281bc77bea86a92df59225357b6b54 console.log(b); //a3853813486b53eca6bf7d2428876161 console.log(a === b); //false 

我希望ab都是true …是一样的。

为什么不是这样? 他们为什么不同?

他们是不一样的string,看连字符:

 '89Zr-J591' // ^ this is U+002D '89Zr−J591' // ^ this is U+2212 
 % charinfo −- U+2212 MINUS SIGN [Sm] U+002D HYPHEN-MINUS [Pd] 

在第一个例子中使用了U+002D 。 当你在键盘上按下减号时,你会得到什么?

在第二个例子中使用U+2212