Подтвердить что ты не робот

ToLowerCase в Chrome против Firefox

Ниже приведено 0 в Firefox. Однако он дает -1 в хроме.

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

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

Chrome добавляет дополнительный символ, если нижний корпус (латинская заглавная буква я с точкой над "\ u0130" )

"İ".toLocaleLowerCase().length
>2

Это нормальное поведение?

4b9b3361

Ответ 1

Вы можете сначала закодировать строку и сравнить ее. Это даст тот же результат в Firefox и Chrome.

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

Тот факт, что Firefox и Chrome обрабатывают его по-другому, странно. Но странно определяется w3c spec здесь: https://www.w3.org/TR/charmod-norm/#matchingAlgorithm fwiw, вы должны сначала ввести строчную строку, а затем закодировать ее. Они не будут совпадать, если они не будут в одном и том же случае.

Найден Ошибка Firefox и отмеченный дубликат [812837]. (https://bugzilla.mozilla.org/show_bug.cgi?id=812837) Это было сообщено в 2011 году и оно все еще открыто. Поэтому я считаю, что это не приоритет.