【问题标题】:French Regional settings and Comma for decimal seperator法语区域设置和逗号作为小数分隔符
【发布时间】:2018-04-12 05:48:35
【问题描述】:

我正在创建一个需要在法国托管的 Web 应用程序。具有法国区域设置、服务器排序规则和本地时区。

我面临的主要问题是数字格式。在欧洲/法国风格中,数字格式使用逗号 (,),而不是点 (.) 作为小数分隔符(例如:12,53(法国)= 12.53(美国))。我的开发环境遵循美国文化。

在服务器设置上需要注意哪些事情来处理这个问题。

在 SQL 服务器上,它总是存储点(。),但我必须在屏幕上显示逗号(,)。

我该如何处理。

【问题讨论】:

  • 您是否打算在将显示的每个内容转换为字符串之前将其提供给您的 web 应用程序?如果是这样,您可以在对其进行字符串化时使用法国文化 - 但这是大量有风险/容易出错的输出。可能更好:将您的 Web 应用程序使用的文化设置为 fr-FR,在解析来自用户的输入以将其转换为不变的数字/日期时要小心,并且只接受 fr-FR 可验证的输入。输出时,使用知道 fr-FR 的转换器在 fr-FR 需要时显示它。总而言之 - 一个广泛的主题....

标签: c# asp.net regional-settings french


【解决方案1】:

在您格式化数据之前的代码中(数字/日期/货币等)- 首先,获取Current Culture Info

然后使用Data Specific Format 将您的字符串格式化为与文化相关的字符串。

【讨论】:

  • 我在我的应用程序中使用了一些公式,例如:round(x,y).. 它可以以普通十进制工作,例如 round (6.35898,3).. 但在法语区域设置中,同时存储它存储为 round (6,35898,3).. 这使表达式无效。此外,SQL 服务器使用点作为精度/比例分隔符存储数值,当使用实体框架进行选择时,我得到的是点,而不是逗号。
【解决方案2】:

您可以通过以下方式实现:

使用点(.)作为小数分隔符将数据存储在数据库中,在检索时您可以将值转换为字符串并将点(.)替换为逗号(,)。例如,

string doubleValue=valueFromDatabase.ToString("0.00");
doubleValue=doubleValue.replace('.',',');

您也可以使用varchar 格式。因此您可以使用逗号(,)作为小数分隔符存储数据并直接从数据库中检索。您可以提供客户端验证以接受所需格式的数据。

【讨论】:

  • 我在我的应用程序中使用了一些公式,例如:round(x,y).. 它可以以普通十进制工作,例如 round (6.35898,3).. 但在法语语言环境中,同时存储它存储为 round (6,35898,3).. 这使表达式无效。此外,SQL 服务器使用点作为精度/比例分隔符存储数值,当使用实体框架进行选择时,我得到的是点,而不是逗号。
  • @GeorgeThomas 您不需要在法语语言环境中执行数学运算,以普通十进制执行运算,然后将其转换为字符串并作为法语语言环境存储在数据库中。再次检索时将逗号(,)替换为点(.),转换为double类型后即可进行操作。
猜你喜欢
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2013-12-21
  • 2013-02-19
  • 1970-01-01
相关资源
最近更新 更多