比较具有不同编码的字符串

时间:2014-11-04 15:22:50

标签: javascript string comparison

我只需要与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"

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

所以我的问题是:如何正确处理?我可以将空格替换为相等吗?但我想还有其他控制字符 - 比如tab,return等等 - 这可能搞砸了我的比较?

1 个答案:

答案 0 :(得分:0)

  

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

不,它不是一个不同的encoding。它只是一个不同的空格 - non-breaking space

  

我可以将白色空间替换为相等吗?但我想还有其他控制字符 - 比如tab,return等等 - 这可能搞砸了我的比较?

您可以替换所有这些。你可能想尝试像

这样的东西
value1.replace(/\s+/g, " ").replace(/^\s*|\s$/g, "") == value2

joins multiple whitespacesall kindsreturns,包括trims)到单个空格,还有{{3}}比较前的字符串