gpt4 book ai didi

javascript - Javascript 的 toUpperCase() 语言安全吗?

转载 作者:数据小太阳 更新时间:2023-10-29 05:57:34 26 4
gpt4 key购买 nike

Javascript 的字符串原型(prototype)方法 toUpperCase() 是否会在每种支持 UTF-8 的语言/字符集中提供自然预期的结果?

我试过简体中文、韩语、泰米尔语、日语和西里尔语,到目前为止结果似乎还算合理。我可以相信该方法是语言安全的吗?

示例:

  "イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス".toUpperCase()
> "イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス"

编辑:正如@Quentin 指出的那样,还有一个 String.prototype.toLocaleUpperCase()这可能使用起来更“安全”,但我还必须支持 IE 8 及更高版本,以及基于 Webkit 的浏览器。因为它是 ECMAScript 3 标准的一部分,所以它应该适用于所有这些浏览器,对吧?

有谁知道使用它会产生自然意想不到的结果的任何情况?

最佳答案

你期待什么?

JavaScript 的 toUpperCase() 方法应该使用 Unicode 标准定义的“区域不变大写映射”。所以,基本上,"i".toUpperCase() 在所有情况下都应该是 I。在区域不变大写映射由多个字母组成的情况下,大多数浏览器不会正确地将它们大写,例如 "ß".toUpperCase() 通常不是 SS .

此外,有些语言环境的大写规则与世界其他地方不同,最著名的例子是土耳其语,其中 i 的大写版本是 ©(反之亦然),I 的小写版本是 ı(反之亦然)。

如果您想要这种行为,您需要一个设置为土耳其语言环境的浏览器,并且您必须使用 toLocaleUpperCase() 方法。

另请注意,某些书写系统有第三种情况,即“title case”,当您要将单词“大写”时,它会应用于单词的第一个字母。这也是Unicode标准定义的(例如,连字nj的Title case是Nj,而大写是NJ),但(据我所知)不适用于 JavaScript。因此,如果您尝试使用 substringtoUpperCase 将单词大写,预计在极少数情况下它会出错。

关于javascript - Javascript 的 toUpperCase() 语言安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30762886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com