String.toLowerCase()的用途是否具有默认语言环境?

时间:2014-01-27 15:39:12

标签: java string unicode locale case-sensitive

Java有两个重载,分别用于String.toLowerCase和toUpperCase。其中一个重载将Locale作为参数,而另一个不使用参数并使用默认语言环境(Locale.getDefault())。

无参数变体可能无法按预期工作,因为大小写转换遵循国际化,并且默认语言环境取决于系统。最值得注意的是,小写字母i在土耳其语语言环境中被转换为点缀upper的大写字母。

这些方法的目的是什么?无参数变体是否有合法用途?或者它们可能只是一个设计错误? (与默认情况下使用系统默认字符编码的几个I / O API不同。)

3 个答案:

答案 0 :(得分:0)

我认为它们只是方便的方法,大部分时间都可以使用,因为真正需要I18n的应用程序可能只是世界上java应用程序世界中的一小部分。

如果你在java程序中对文件名的unix路径进行硬编码并尝试在windows框中运行,你也会得到错误的结果,这不是java的错。

答案 1 :(得分:0)

我想这是一次写一次运行原则的实现。

这是有道理的,因为您可以在JVM启动时提供默认语言环境作为运行时参数之一。

此外,Java运行时为日期和数字提供了许多类似的格式化方法。 (SimpleDateFormatNumberFormat等)

答案 2 :(得分:0)

多个blog posts表明默认的语言环境和字符集确实是设计错误,没有任何有意义的用途。