Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我(美国人)如何测试我的ASP.NET/SQL Server应用程序是否正确处理德国的小数_.net_Asp.net_Internationalization_Cultureinfo - Fatal编程技术网

我(美国人)如何测试我的ASP.NET/SQL Server应用程序是否正确处理德国的小数

我(美国人)如何测试我的ASP.NET/SQL Server应用程序是否正确处理德国的小数,.net,asp.net,internationalization,cultureinfo,.net,Asp.net,Internationalization,Cultureinfo,在美国,你用“.”作为分隔符,但在德国你用“,”。我正在尝试测试我的逻辑是否足够聪明,可以处理任何一个问题,但我似乎无法将我的Windows2000机器置于德语模式 我转到控制面板,区域选项,并将“您的地区”更改为“德国”。然后我重新启动了IIS和SQL Server。但我的改变似乎没有生效 这些行仍然显示“.”作为分隔符 System.Globalization.CultureInfo ci=新建 System.Globalization.CultureInfo( System.Threadi

在美国,你用“.”作为分隔符,但在德国你用“,”。我正在尝试测试我的逻辑是否足够聪明,可以处理任何一个问题,但我似乎无法将我的Windows2000机器置于德语模式

我转到控制面板,区域选项,并将“您的地区”更改为“德国”。然后我重新启动了IIS和SQL Server。但我的改变似乎没有生效

这些行仍然显示“.”作为分隔符

System.Globalization.CultureInfo ci=新建 System.Globalization.CultureInfo( System.Threading.Thread.CurrentThread.CurrentCulture.Name)

响应.写入(ci.NumberFormat.NumberDecimalSeparator)


我做错了什么?

我想你想要的是“格式”选项卡(第一个)。你可以将当前的文化设置为德语


我认为这比切换区域设置容易

设置区域设置时,是否确保“将所有设置应用于当前用户帐户和默认用户配置文件”(高级选项卡)

在大多数情况下,这应该可以做到。我还假设您的文化在
Web.config
globalization
元素中没有预设为“en-us”


似乎您不希望通过在代码中手动设置区域性设置来实现这一点,而是希望它们由系统设置继承。依我看,这是一种很好的检查方法,因为您的更改也应该传播到SQL server。

如果您真的想点击这个……虚拟机是您的朋友。 但是你真的需要一个msdn订阅来获得操作系统的德语版本


将操作系统(WinXP或Vista)加载到虚拟机中,然后浏览到网站。

我认为IIS不使用区域设置。您需要在代码中明确设置CultureInfo。

如果您只测试了一次,您可以将该行更改为:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("de-DE");

然后再换回来。如果您想进行一系列单元测试,可以使用这样的字符串。

最好的测试方法是在web.config中添加一个全球化元素,例如:

<system.web>
   <globalization culture="de-DE" uiCulture="en-US" />
</system.web>


将区域性更改为de de将影响日期和数字格式:如果您愿意,也可以更改uiCulture,将uiCulture保留为en US意味着您将收到美式英语的异常消息。

将网站处理格式问题(如十进制分隔符)的方式取决于web服务器的区域设置通常是错误的。这增加了一个服务器配置问题,这会使部署应用程序变得更加困难,同时实际上不一定能满足最终用户的需求。例如,您可能希望将同一应用程序的法语和英语部署安装到单个(加拿大!)服务器上

由于遗留问题(例如,仅在日语中运行的应用程序,或世界各地将en-US作为“Windows标准版本”运行的生产服务器),系统区域设置设置为不适当的设置也是很常见的

通常最好在应用程序层处理这个问题,每个站点代码部署一个区域设置选项,或者(如果需要)每个站点用户一个区域设置选项。然后,任何人都可以登录到该应用程序并获得相应的号码格式


最后,如果你的应用程序的界面是纯英语的,不管怎样,坚持使用英语数字格式可能更合适。德国人已经习惯了这一点;实际上,将英语和德语的UI惯例混合在一起可能会更令人困惑。IMO:彻底本地化,或者根本不本地化。

我可以澄清一点吗,您想将您的机器置于德语模式以测试您的web应用程序,它恰好与浏览器在同一台机器上运行

当这是真的运行时,我们可以假设服务器可以托管在德国以外的地方(或者可能在德国,但在一台设置了美国地区的机器上——这种情况经常发生)。如果是这样,那么在服务器上设置区域性并不是您真正想要的,而且在部署时您可能无法做到这一点

您还存在另一个问题,无法通过简单的方法检测用户想要使用的文化。您可以从HTTP头中检测各种信息,在IP地址上进行域查找,但是如果一个说德语的人想使用您来自美国的站点,或者一个美国人在德国想看到十进制分隔符的“.”而不是“

换句话说,我的意思是,你的客户电脑使用的文化并不重要——这并不重要,因为一旦你上网,所有的赌注都被取消了——即使你的应用程序正确地检测到了你的文化,也可能不是你的用户想要的

因此,我要做的是询问用户他们想要什么语言,然后在运行时在应用程序中显式设置语言环境。这确实意味着要求用户选择语言,但这是确保用户使用正确语言环境的唯一方法。如果你所有的用户都是德国人,那么你不必问,你只需要硬编码就可以了。如果他的方法听起来可能有效,那么这里有一些很好的示例代码:


祝你好运,或者更确切地说,祝你好运

有一个“数字”选项卡,它显示我的“十进制符号”为“,”。所以控制面板看起来不错,但ASP.NET仍然认为是我们。还有别的地方我需要换吗?我的W2K机器上没有这样的东西。哎呀!我错过了关于W2K的部分。我的是XP SP2。但是,即使在Win 2K上,也应该有一种应用所有设置的方法。让我查一下。在W2K上,我认为您必须手动编辑注册表以更改默认配置文件的区域设置:查看HKEY_USERS/.default/Control Panel/International。但只需在web.config中添加一个全球化元素就更容易了。似乎我们中很少有人真正知道这个问题的答案。。。真是太好了