.NET Core和.NET Framework之间的CultureInfo存在差异

5

.NET Core.NET Framework之间,CultureInfo存在一些差异。这是有原因的吗?

示例:

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

.NET Core中,解析结果为:

it

过去,它先前解析为在.NET Framework上执行以下操作:

it-IT

这会导致一些单元测试失败。在两个干净的控制台项目中运行此代码会产生不同的结果。尝试从Nuget添加System.Globalization并没有改变结果。

是否需要进行某些配置才能使其相同,或者他们已经完全破坏了CultureInfo?


CultureInfo文档提到可用的文化可能因操作系统而异。也许这就是正在发生的事情? - Joe Sewell
1
我总是尝试与亚文化合作。大型文化中有许多不同之处,其中包括几个亚文化。为了全球化您的代码,您应该进入亚文化级别的代码,以避免未来的问题。 - Cleptus
1个回答

2

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

你要求文化“it”,你就得到了文化“it”。

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

如果你要求

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

直接。

在这两个世界中,你将得到相同的结果。

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


除非將信息明確地指定,否則也無法工作:var culture = new CultureInfo(new RegionInfo("sv-SE").Name); // Northern Sami in Core and Swedish in NET. - Deukalion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接