Javascript toLowerCase()提供不同长度的非拉丁字符

Javascript toLowerCase()提供不同长度的非拉丁字符,javascript,text,unicode,Javascript,Text,Unicode,为什么JS在大写i(strong>、javascript与大写的、ö、ç、Č、Ş(strong>、Ö、cho、strong>、chop、strong>strong>、strong>strong>)方面存在问题,如下所述?(问题与字母位置无关。) 而且 "İ".length 1 "İ".toLowerCase().length 2 "İ".toLocaleLowerCase().length 2 对于怀疑论者,这里是我复制上述代码的控制台屏幕截图: 还有我的字符集(这是我在这个问题发生后检查的

为什么JS在大写i(strong>、javascript与大写的、ö、ç、Č、Ş(strong>、Öchostrong>、chop、strong>strong>、strong>strong>)方面存在问题,如下所述?(问题与字母位置无关。)

而且

"İ".length
1
"İ".toLowerCase().length
2
"İ".toLocaleLowerCase().length
2
对于怀疑论者,这里是我复制上述代码的控制台屏幕截图:

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



提前感谢。

问题是大写字母上方的字符
İ
←. 这是javascript中的另一个字符串值。您可以使用
.split()
查看字符计数。还有一件事需要注意的是,它不仅仅是关于资本的
a
,而且
a
也在这些列表中

您应该使用
String.prototype.toLocaleLowerCase()
来映射特定于语言环境的大小写

console.log(“áş”.toLocaleLowerCase().split(“”));

console.log(“İş”.toLocaleLowerCase().split(“”))问题是大写字母上方的字符
İ
←. 这是javascript中的另一个字符串值。您可以使用
.split()
查看字符计数。还有一件事需要注意的是,它不仅仅是关于资本的
a
,而且
a
也在这些列表中

您应该使用
String.prototype.toLocaleLowerCase()
来映射特定于语言环境的大小写

console.log(“áş”.toLocaleLowerCase().split(“”));

console.log(“İş”.toLocaleLowerCase().split(“”))“İ”。length
是1,而
“İ”。toLowerCase()。length
“İ”。tolocallowercase()。length
仍然是2。为什么另一个字符串值(İ上方的点)与I一起被视为一个字符,而
toLowerCase()
tolocallowercase()
将其视为两个字符?@ErtürkÖztürk在这种情况下,我有点不知所措。但是可能存在一些针对区域设置的内部问题。这教会了我很多,但是
“İ”。length
是1,而
“İ”。toLowerCase()。length
“İ”。tolocalowercase()。length
仍然是2。为什么另一个字符串值(İ上方的点)与I一起被视为一个字符,而
toLowerCase()
tolocallowercase()
将其视为两个字符?@ErtürkÖztürk在这种情况下,我有点不知所措。但可能存在一些针对区域设置的内部问题。
"İ".length
1
"İ".toLowerCase().length
2
"İ".toLocaleLowerCase().length
2
<meta charset="utf-8" />