我必须做一个应用程序,将使用在美国,其中有十进制分隔符。在有十进制分隔符as的斯堪的纳维亚半岛,斯堪的纳维亚国家也有额外的字符,如
我对这种国际化相当陌生。美国和斯堪的纳维亚的应用程序和数据库都是一样的。
在这些问题上我需要你的帮助:-
谢谢
发布于 2011-11-14 04:44:35
在Server中,校对用于对文本数据进行排序等操作,因此我认为该决定不会影响货币等。
从.NET前端(和sql后端),您必须选择正确的数据类型(例如,Decimal,DateTime)来操作数据--为了显示和输入目的,您可以执行特定于地区的格式设置(例如,参见数值格式字符串中的货币格式说明符 )。可以在函数(如Decimal.ToString或String.Format )中指定格式。它们将使用您的当前现场,但您可以让覆盖指定特定于地区的格式提供程序。类似地,您可以使用解析方法将字符串转换为实际的数据类型。
发布于 2011-11-14 04:41:11
在将字符表达式转换为数字数据类型时会遇到一些问题。
数据类型转换
正在转换为精确数字数据类型的字符表达式必须由数字、小数点和可选加号(+)或减号(-)组成。前导空格被忽略。字符串中不允许逗号分隔符,例如123,456.00中的数千个分隔符。
发布于 2011-11-14 06:36:08
使所有字符串数据类型为NVARCHAR
(如果长度固定,则为NCHAR
),以便支持unicode字符。
既然您说您的“数据库”将是相同的,那么您的意思是服务器是同一个物理实例,还是只是相同的模式?
如果要为美国和斯堪的纳维亚提供单独的服务器,这意味着您只需将SQL服务器排序规则和Windows server本地化设置设置为USA或斯堪的纳维亚,就需要通过开发不断测试解决方案,以确保任何错误都不会在不被注意到的情况下传播太长时间。
也可以有一个数据库实例,然后在WS /应用程序端更改本地化,例如,这意味着您以USA格式传递所有时间和数字。但是,您可以将这些值显示为美国或斯堪的纳维亚格式,如果您是一个已安装(而不是web应用程序),您可以在用户的本地计算机本地化设置下运行此控件,这将为您完成大部分的繁重工作,而不会出现任何问题。
例:DateTime.Now.ToString()
将报告"16:34 14/11/2011“中的一个本地化设置,而"16:34 11/14/2011”用于美国本地化,内部数据是相同的。
最后,如果使用单个中央数据库,请确保将日期保存为UTC时间而不是本地时间,否则将忽略数据之间的时区差异。
https://stackoverflow.com/questions/8117308
复制相似问题