更新:Java的6引入其作为描述Locale.ROOT:
这被看作是所有语言环境的基部区域设置,并且被用作语言/国家中性区域设置的语言环境敏感操作。
这可能比使用US更好,但我没有根据下面的代码检查它。
不,这基本上是正确的选择。虽然是美国文化和格式不变文化之间的差异,我不认为它们影响套管规则。
编辑:其实,一个快速的测试程序显示有是字符,这是大写的在不变的文化在美国文化.NET不同,以:
using System;
using System.Globalization;
class Test
{
static void Main()
{
CultureInfo us = new CultureInfo("en-US");
for (int i = 0; i < 65536; i++)
{
char c = (char) i;
string s = c.ToString();
if (s.ToUpperInvariant() != s.ToUpper(us))
{
Console.WriteLine(i.ToString("x4"));
}
}
}
}
输出:
00b5
0131
017f
01c5
01c8
01cb
01f2
0345
0390
03b0
03c2
03d0
03d1
03d5
03d6
03f0
03f1
03f5
1e9b
1fbe
我现在没有时间看这些,但值得研究。我不知道在Java中是否会有相同的差异 - 你可能想要对它们进行抽样并找出你想要的代码。
编辑:只是为了完成,值得一提的是,只检查个别字符...而你真的上层整个字符串,这可以有所作为。
看着Java上壳的代码,似乎只有tr,az和lt国家的特定于locale的行为。我知道tr是土耳其,但我不知道其他人...