.NET Framework 4.0中的语言和区域设置

时间:2013-06-01 11:39:04

标签: c# .net localization number-formatting

我们有一个Winform应用程序,它从数据库中获取一些数值。当用户版本的Windows是英语时,这很好用。所以数字格式都很完美。但是,当在Windows 7中以葡萄牙语作为基本语言(葡萄牙语 - 巴西)打开相同的应用程序时,这些数字都是错误的。这是因为美国英语和葡萄牙语的数字格式完全不同。

最近在.NET Framework 4.0中出现了此更改,因为应用程序在使用2.0 Framework构建时运行良好。

例如,数字“THOUSAND”将显示为1.000,00,在运行葡萄牙语版本的Windows的系统中将其解释为ONE。

英语:1,000.00 =一千

葡萄牙语:1.000,00 =一千

有人可以向我指出有关如何解决此问题的任何资源,或者强制应用程序使用数据库值而不是将其格式化为本地用户系统的正确方法是什么?用户可以使用US格式显示数字。

2 个答案:

答案 0 :(得分:2)

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");

这将重置文化,在表单/程序的开头使用它

Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

你可以尝试两者,因为我不确定哪一个会起作用

答案 1 :(得分:1)

显示数字的格式(分隔符和空格)是字符串表示的问题。小数据存储在数据库或内存中而没有分界符(显然),它们只是硬盘上的128位(粗略地说)。当您尝试显示时,格式就会出现。如果您的号码以正确的数字格式存储在数据库中,那么这应该不是问题。

如果您尝试将字符串转换为数字,可能会出现此问题。例如,如果您将db中的值存储为字符串(我希望您不要)。在这种情况下,每次将数字转换为字符串时都应指定格式提供程序,反之亦然。 例如:

decimal.Parse(numberAsString, CultureInfo.InvariantCulture); // 1
decimalNumber.ToString(CultureInfo.InvariantCulture); // 2

reference 1 reference 2