【发布时间】:2023-04-01 11:50:01
【问题描述】:
我有一个显示数字的 ASP.net MVC 网站。我能否以某种方式确定用户的计算机是否配置为使用逗号或点作为小数分隔符?
我可以在 Request.UserLanguages 中检查不同的语言,但这对于确定小数点分隔符不是很准确。
【问题讨论】:
标签: c# asp.net-mvc localization
我有一个显示数字的 ASP.net MVC 网站。我能否以某种方式确定用户的计算机是否配置为使用逗号或点作为小数分隔符?
我可以在 Request.UserLanguages 中检查不同的语言,但这对于确定小数点分隔符不是很准确。
【问题讨论】:
标签: c# asp.net-mvc localization
您可以查看here 如何从浏览器语言中获取CultureInfo - 这将为您提供
CultureInfo 对象,您可以像这样使用:
var sep = browserCulture.NumberFormat.NumberDecimalSeparator;
【讨论】:
MVC 在处理十进制值时出现问题。
Haack 写了一个很棒的post 来讨论这个问题。它向您展示了如何克服这一点。
【讨论】:
由于您询问的是最终用户的计算机,因此答案是否定的。不幸的是,网络浏览器不会为您提供此类信息。您可以获得的只是用户的首选语言,但它是通过 HTTP Accept-Language 标头发送到服务器的浏览器设置。就是这样。
如果你认为 JavaScript 是否会给你这个,答案是否定的。它在沙盒中运行,因此无法访问操作系统。
我不确定 Flash 是否可以访问此类信息(可能),但最终用户可能会阻止它。 ActiveX 控件也是如此,而且它不是跨平台的。
所以坚持从网络浏览器检测到的文化并相应地格式化数字,这样会更容易(尽管它不支持最终用户修改操作系统设置)。
【讨论】: