首页 > 解决方案 > 使用相同的 CultureInfo 时,不同计算机上的格式不同,为什么?

问题描述

我在使用时遇到问题CultureInfo

这基本上是我的代码:

Console.WriteLine(0.5.ToString("P2", new CultureInfo("en-US")));

运行它时,这是我在两台不同的计算机上得到的:

如您所见,格式不一样。与我的计算机(Windows 10)相比,澳大利亚 VPS(运行 Windows Server 2016)在百分号前有一个空格。

为什么?我怎样才能“真正”在CultureInfo任何地方使用相同的 / 格式?

标签: c#cultureinfo

解决方案


Windows 上的CultureInfo使用机器/用户级别的区域设置信息,并且它自己没有任何信息。操作系统版本和更新会相对频繁地更新此信息。因此,具有不同级别的补丁或不同版本的操作系统的机器可能会有差异,通常如您所见,但如果小数分隔符在“。”之间发生变化,有时会很关键。和 ',' 或地区的货币符号会发生变化。

通常这不是问题,因为这种格式仅用于显示/解析来自用户的值,而不是在任何地方存储数据(使用InvariantCulture)。大多数个人用户永远不会使用足够多的机器来注意到桌面应用程序的差异。而对于运行具有不同操作系统版本的多个服务器的服务器端代码(即 ASP.Net)来说,这种可能性就更小了。

如果您确实必须显示独立于操作系统的相同格式,则必须为您感兴趣的语言环境构建自己的 CultureInfo 对象。在许多情况下,您可以根据现有的创建自己的对象CultureInfo,然后只修补您关心的属性。


推荐阅读