Javascript toLowerCase()给出了非拉丁字符的不同长度

时间:2016-05-23 07:39:33

标签: javascript text unicode

为什么JS有大写字母(İ)有问题,而javascript可用大写ş,ö,ç,ğ,ü(ŞÖ< / strong>,ÇĞÜ),如下所述? (问题与字母位置无关。)

"İş".toLowerCase().length
3
"İŞ".toLowerCase().length
3
"iŞ".toLowerCase().length
2
"iş".toLowerCase().length
2

此外

"İ".length
1
"İ".toLowerCase().length
2
"İ".toLocaleLowerCase().length
2

对于怀疑论者,这里是我复制上述代码的控制台的屏幕截图:

enter image description here

和我的字符集(这是我在问题发生后检查的第一件事):

<meta charset="utf-8" />

提前致谢。

1 个答案:

答案 0 :(得分:3)

问题是首都İ 之上的字符。这是javascript中的另一个字符串值。您可以使用.split();查看字符数。需要注意的另一件事不仅仅是资本İ,而且也在这些列表中。

您应该使用String.prototype.toLocaleLowerCase()来区分特定于区域设置的案例映射。

console.log("áş".toLocaleLowerCase().split(''));

console.log("İş".toLocaleLowerCase().split(''));