比较两个字符串时遇到一个奇怪的问题。这是我的代码:
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,但就我而言,
x
和y
来自同一来源,并且具有相同的编码。 最佳答案
字符串中的Ä
可以表示为单个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/