在不同的电脑上使用相同的文化信息时,格式不同,为什么?

问题描述 投票:0回答:1

我在使用 "文化信息 "时遇到了一个问题 CultureInfo.

这基本上是我的代码。

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

当运行它时,这是我在两台不同电脑上得到的结果。

你可以注意到,格式化是不一样的。澳大利亚的VPS(运行Windows Server 2016)与我的电脑(Windows 10)相比,百分比符号前有一个空格。

为什么会这样?我怎么能 "真的 "使用相同的 CultureInfo到处都是格式化?

c# cultureinfo
1个回答
1
投票

CultureInfo Windows上使用的是机器用户级别的locale信息,自己没有任何信息。这些信息会随着操作系统的版本和更新而频繁更新。因此,不同级别的补丁或不同版本的操作系统的机器很可能会有差异,通常是你看到的微小的差异,但有时是关键的差异,比如小数点分隔符在'.'和','之间的变化,或者一个地区的货币符号的变化。

通常这不是一个问题,因为这样的格式化只用于向用户显示parse值,而不是存储数据的地方(这使用了 InvariantCulture). 大多数个人用户不会使用足够多的机器来注意桌面应用的差异。而对于服务器端的代码(例如ASP.Net),使用不同版本的操作系统运行多台服务器的可能性就更小了。

如果你真的必须显示出与操作系统无关的相同格式,你就必须为你感兴趣的地区建立自己的CultureInfo对象。在许多情况下,您可以直接创建自己的 CultureInfo 在现有的基础上,只需修补你关心的属性。

© www.soinside.com 2019 - 2024. All rights reserved.