【问题标题】:CultureInfo differs between .NET Core and .NET Framework.NET Core 和 .NET Framework 之间的 CultureInfo 不同
【发布时间】:2019-11-22 17:29:47
【问题描述】:

.NET Core.NET Framework 之间的 CultureInfo 似乎有些不同。 这有什么原因吗?

例子:

var italian = CultureInfo.GetCultureInfo("it").TextInfo.CultureName;

.NET Core 上解析为:

it

虽然之前在 .NET Framework 上解析为:

it-IT

这会破坏一些单元测试。 在两个干净的控制台项目中运行它会产生不同的结果。 尝试从 Nuget 添加 System.Globalization,结果没有差异。

是否需要一些配置才能使其保持不变,或者它们是否破坏了 CultureInfo altogheter?

【问题讨论】:

  • [CultureInfo 的文档] (docs.microsoft.com/en-us/dotnet/api/…) 提到可用的文化可能因操作系统而异。也许这就是正在发生的事情?
  • 我总是会尝试与亚文化合作。令人惊讶的是,在具有多种亚文化的大文化中存在如此多的差异。为了使您的代码全球化,您应该进入亚文化级别的代码以避免将来出现问题

标签: c# .net-core locale globalization cultureinfo


【解决方案1】:

我确认了这种行为,但 Core 更具决定性。

你要求文化“它”,你得到文化“它”。

.NET Framework 正在添加更多细节并为其指定默认的亚文化-IT。

如果你要求

var italian = CultureInfo.GetCultureInfo("it-IT").TextInfo.CultureName;

直接。

你会在两个世界中得到相同的结果。

更改该字符串对您的测试来说应该是一个小问题。

【讨论】:

  • 除了明确的信息也不起作用: varculture = new CultureInfo(new RegionInfo("sv-SE").Name); // Core 中的北萨米语和 NET 中的瑞典语。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多