我在Windows 8开发盒上发生了一个奇怪的问题.在比较运行Kentico的ASP .NET应用程序和控制台应用程序(均在.NET 4.0上运行)时,以下代码行为NumberFormat.NumberDecimalSeparator生成两个不同的值.
var culture = new System.Globalization.CultureInfo("en-ZA");
var separator = culture.NumberFormat.NumberDecimalSeparator;
Run Code Online (Sandbox Code Playgroud)
分离器的价值:
我的区域设置的正确输出是句点.
这怎么可能?当我第一次选择十进制数字的格式化问题时,我认为它可能是一个Kentico错误,但是此测试表明不是这样.对于特定区域设置,CultureInfo的新实例如何返回跨应用程序不同的实例?
我们刚刚设置了一个新的Windows 2008 R2服务器,当它被设置(包括IIS)时,文化设置设置为英语("美国").然后他们根据其他服务器改为英语("英国").没有其他设置被更改.
IIS设置尚未更改,Web服务中没有设置文化的位置,我还检查了machine.config和web.config - 在所有级别.Net全球化设置为在新旧服务器上保持不变.
但是在新的2008R2服务器中,Threading.Thread.CurrentThread.[CurrentUICulture/CurrentCulture].Name是:
UI Culture = en-US (1033)
Culture = en-US (1033)
Run Code Online (Sandbox Code Playgroud)
在旧服务器(2008年,而不是R2)中,它是:
UI Culture = en-US (1033)
Culture = en-GB (2057)
Run Code Online (Sandbox Code Playgroud)
我们有一些旧的遗留代码,要求默认为en-GB,我需要以与旧服务器相同的方式实现,但无法弄清楚为什么这是默认为en-US而不是en-GB.
我已经检查了这个答案/sf/answers/779473551/,但它没有帮助.(我意识到我可以强迫新服务器这样做).
那么为什么文化违约到了美国呢?