我在比较两个字符串时遇到了一个奇怪的问题.这是我的代码:
console.log(x == y);
console.log("'" + x + "'=='" + y + "'");
console.log(typeof(x));
console.log(typeof(y));
Run Code Online (Sandbox Code Playgroud)
在控制台中,我有:
false
'1Ä4±'=='1Ä4±'
string
string
Run Code Online (Sandbox Code Playgroud)
我猜我的字符串包含奇怪的字符,所以我应该如何比较它们呢?我读比较Unicode字符时,JavaScript字符串比较失败,但在我的情况,x以及y来自同一来源,具有相同的编码.
的Ä在你的字符串可表示作为单一UNICODE字符(大写拉丁字母A随着分音符,U + 00C4),或作为复合字符组成的拉丁大写字母A(U + 0041)随后是结合分音符(U + 0308)变音符号.
也可能有任意数量的零宽度空间(U + 200B),以及字符串中的其他"不可见"字符.
因此,两个字符串可以呈现相同,但实际上是不同的.
小智 5
尝试转义两个字符串以查看其中包含哪些字符。在这种情况下(尽管 Fr\xc3\xa9d\xc3\xa9ric 已经涵盖了可能的情况),因为您使用的是 PGP,所以您可能存在二进制不可打印字符。
\n\nescape(x);\nescape(y);\nRun Code Online (Sandbox Code Playgroud)\n\n在你的控制台中,你将能够检测到正在运行的字符。
\n| 归档时间: |
|
| 查看次数: |
3968 次 |
| 最近记录: |