c# - 使用相同的 CultureInfo 时,不同计算机上的格式不同,为什么?
问题描述
我在使用时遇到问题CultureInfo
。
这基本上是我的代码:
Console.WriteLine(0.5.ToString("P2", new CultureInfo("en-US")));
运行它时,这是我在两台不同的计算机上得到的:
如您所见,格式不一样。与我的计算机(Windows 10)相比,澳大利亚 VPS(运行 Windows Server 2016)在百分号前有一个空格。
为什么?我怎样才能“真正”在CultureInfo
任何地方使用相同的 / 格式?
解决方案
Windows 上的CultureInfo
使用机器/用户级别的区域设置信息,并且它自己没有任何信息。操作系统版本和更新会相对频繁地更新此信息。因此,具有不同级别的补丁或不同版本的操作系统的机器可能会有差异,通常如您所见,但如果小数分隔符在“。”之间发生变化,有时会很关键。和 ',' 或地区的货币符号会发生变化。
通常这不是问题,因为这种格式仅用于显示/解析来自用户的值,而不是在任何地方存储数据(使用InvariantCulture
)。大多数个人用户永远不会使用足够多的机器来注意到桌面应用程序的差异。而对于运行具有不同操作系统版本的多个服务器的服务器端代码(即 ASP.Net)来说,这种可能性就更小了。
如果您确实必须显示独立于操作系统的相同格式,则必须为您感兴趣的语言环境构建自己的 CultureInfo 对象。在许多情况下,您可以根据现有的创建自己的对象CultureInfo
,然后只修补您关心的属性。
推荐阅读
- java - 排除文件中字符串的其他单词(Java)
- asp.net-mvc - AcquireTokenInteractive - MSAL 中的问题
- macos - 我可以在不使用 Composer 库的情况下创建场景(菜单、高分和游戏)吗?
- symfony - 学说:通过与选定元素的关系找到了一个新实体
- python - python spaCy 块和令牌的交集
- c# - C#:我们如何尝试基于条件解析?
- vim - 如何在 Vim 中缩进一个行范围?
- python - 如何向现有的熊猫数据框添加新行?
- angular - 角度路由重定向而不剪切 url
- python - 无法在 GoogleColab 中创建新工作表并进行计算