在Chrome与Firefox中设置为小写

ToLowerCase in Chrome vs Firefox

本文关键字:设置 Chrome Firefox      更新时间:2023-09-26

以下在 Firefox 中给出 0。但是,它在铬中给出-1。

var index = "İSTANBUL".toLowerCase().indexOf("is");
console.log(index);

https://jsfiddle.net/81f0yr8w/1/

Chrome 在小写 İ(拉丁大写字母 i 时放置一个额外的字符,"''u0130"上方有一个点)

"İ".toLocaleLowerCase().length
>2

这是正常行为吗?

您可以先对字符串进行编码,然后再进行比较。这将在Firefox和Chrome中产生相同的结果。

// 0 Chrome // 0 Firefox
encodeURIComponent("İSTANBUL".toLowerCase()).indexOf(encodeURIComponent("İS".toLowerCase())) 

Firefox和Chrome以不同的方式处理它的事实很奇怪。但是 strange 是由 w3c 规范定义的:https://www.w3.org/TR/charmod-norm/#matchingAlgorithm fwiw,您必须先将字符串小写,然后再对其进行编码。除非它们首先是相同的情况,否则它们不会匹配。

找到了火狐浏览器错误并标记为[812837]的副本。(https://bugzilla.mozilla.org/show_bug.cgi?id=812837)它于2011年报道,目前仍在开放。所以我想这不是优先事项。