比较两个字符串时遇到一个奇怪的问题。这是我的代码:

console.log(x == y);
console.log("'" + x + "'=='" + y + "'");
console.log(typeof(x));
console.log(typeof(y));

在控制台中,我有:
false
'1Ä4±'=='1Ä4±'
string
string

我猜我的字符串包含奇怪的字符,那么我应该如何比较它们呢?
我读过Javascript string comparison fails when comparing unicode characters,但就我而言,xy来自同一来源,并且具有相同的编码。

最佳答案

字符串中的Ä可以表示为单个UNICODE字符(Latin Capital Letter A With Diaeresis, U+00C4),也可以表示为composite character,由Latin Capital Letter A (U+0041)后面跟着Combining Diaeresis (U+0308)变音符号组成。

您的字符串中也可能有任意数量的Zero-Width Spaces (U+200B)以及其他“不可见”字符。

因此,两个字符串可能呈现相同的结果,但实际上是不同的。

关于javascript - 看似相同的字符串比较失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16799810/

10-12 16:27
查看更多