为什么Javascript sha1和PHP5 sha1为utf-8字符串生成不同的结果?

Wt *_*est 4 javascript php sha1

我有一个字符串,其中包含一些utf-8字符,如"abc艾",并发现php5 sha1生成与Javascript sha1相比不同的代码,任何人都可以帮我解决这个问题吗?提前致谢.

phpcode:

$str = "abc?";
$result = sha1($str);
Run Code Online (Sandbox Code Playgroud)

结果是 5345129746e444693aa1111c5840e4b57236f002

javascript代码:

var str = "abc?"
var result = sha1(str)
Run Code Online (Sandbox Code Playgroud)

结果是 8a2aa0fed185dcffb922b1c4d67a49105525bd6a

dus*_*uff 6

从PHP获得的结果对于编码为GB18030(61 62 63 B0 AC)的字符串是正确的

你从CryptoJS获得的那个对于编码为UTF-8(61 62 63 E8 89 BE)的字符串是正确的.

这里没有冲突.您的PHP源文件使用不正确的字符串编码保存,因此您获得的结果不具代表性.

请阅读每个程序员绝对正确需要了解的编码和字符集以处理文本.简而言之,您所处理的"艾"是Unicode字符,而不是"UTF-8字符".有多种方式可以由不同的系统表示,并且这些不同的表示具有不同的SHA1和.