Javascript的String原型方法toUpperCase()是否会在每个支持UTF-8的语言/字符集中提供自然预期的结果?
我已经尝试过简体中文,韩文,泰米尔语,日语和西里尔语,到目前为止结果似乎合理.我可以依赖语言安全的方法吗?
例:
"???????????????????????????????????????????????".toUpperCase()
> "???????????????????????????????????????????????"
Run Code Online (Sandbox Code Playgroud)
编辑:正如@Quentin指出的,还有一个String.prototype.toLocaleUpperCase()甚至可能"更安全"使用,但我还必须支持IE 8及更高版本,以及基于Webkit的浏览器.由于它是ECMAScript 3 Standard的一部分,它应该可以在所有这些浏览器上使用,对吧?
有谁知道使用它会产生自然意外结果的任何情况?
你能指望什么?
JavaScript的toUpperCase()方法应该使用Unicode标准定义的"区域设置不变大写映射".因此,基本上"i".toUpperCase()应该是I在所有情况下.在区域设置不变大写映射由多个字母组成的情况下,大多数浏览器不会正确地大写它们,例如"ß".toUpperCase()通常不是SS.
此外,还有一些语言环境具有与世界其他地方不同的大写规则,最值得注意的例子是土耳其语,其中大写版本i是?(反之亦然),小写版本I是?(反之亦然).
如果您想要这种行为,则需要一个设置为土耳其语语言环境的浏览器,并且您必须使用该toLocaleUpperCase()方法.
另请注意,某些书写系统有第三种情况,即"标题案例",当您想要"大写"它时,它应用于单词的第一个字母.这也是由Unicode标准定义的(例如,连字的Title情况?是?大写的?),但是(据我所知)JavaScript不可用.因此,如果您尝试使用substring和大写单词toUpperCase,则在极少数情况下会出现错误.
| 归档时间: |
|
| 查看次数: |
1613 次 |
| 最近记录: |