比较不同编码的字符串

Compare strings with different encodings

本文关键字:字符串 编码 比较      更新时间:2023-09-26

我只需要在JavaScript中与字符串进行比较,有时特定字符串的比较会失败。

jQuery通过text()方法(从一些自动生成的HTML中)获得了一个值:

var value1 = $('#somelement').text();

另一个值被硬编码在一个JavaScript文件中(来自我)。

经过一些测试,我发现这些字符串有不同的编码,当我用escape()函数记录它们时,这一点就变得很清楚了。

Firebug向我展示了这样的东西:

console.log(escape(value1));
"blabla%A0%28blub%29"
console.log(escape(value2));
"blabla%20%28blub%29"

所以最后,是带有不同编码的空白使我的比较失败了。

所以我的问题是:如何正确处理这个问题?我可以将空白替换为相等吗?但我想还有其他控制字符,比如制表符、回车符等等,可能会打乱我的比较?

所以最后,是带有不同编码的空白使我的比较失败了。

不,这不是不同的编码。它只是一个不同的空格——一个不间断的空格。

我可以将空白替换为相等吗?但我想还有其他控制字符,比如制表符、回车符等等,可能会打乱我的比较?

您可以替换所有这些。你可能想试试之类的东西

value1.replace(/'s+/g, " ").replace(/^'s*|'s$/g, "") == value2

它将多个空白(各种类型,包括返回)连接到一个空间,并在比较之前修剪字符串。