【发布时间】:2013-01-18 15:40:41
【问题描述】:
仅从客户端提供的区域设置标识符名称(字符串)开始,我如何或在哪里查找该区域设置的默认“列表分隔符”字符?
“列表分隔符”设置是许多不同类型的应用程序和编程语言在连接或拆分字符串和数组时可能用作默认分组字符的字符。这对于在电子表格程序中打开 CSV 文件尤其重要。虽然这通常是逗号“,”,但此默认字符可能会因机器的区域设置而异。它甚至可能因操作系统而异。
我对我自己的服务器环境不感兴趣。相反,我需要根据客户提供给我的语言环境标识符来了解更多关于客户的信息,因此我自己的服务器设置是无关紧要的。同样对于此解决方案,我无法更改此服务器上的区域设置以匹配整个当前进程的客户端作为查找此值的快捷方式。
如果这是在 ICU 库中定义的,我无法找到任何方法来使用 INTL extension 查找此值。
有什么提示吗?
【问题讨论】:
-
@Mark Baker:这个解决方案不能使用注册表——安全问题,希望有跨操作系统的解决方案。另外,我只想根据语言环境名称查找字符,而不是我自己的服务器计算机配置使用的字符。在那篇文章中,romeok 给出了猜测角色的好方法,但这仍然只是猜测。
-
巧合的是,我目前正在使用尝试通过检查小数和数字分组分隔符来推断列表分隔符。但是在编程的世界里,恕我直言,仅仅基于一些完全不相关的值来假设一个值是危险的。
-
当客户向您发送他们的语言环境时,您是否有办法在客户的机器上运行一些代码?比如说,在 Javascript 中,您可以与语言环境一起发送连接数组或格式化的日期对象,然后可以从中派生分隔符。
-
@Boris:当我说许多不同的编程语言都使用这个字符时,也许我说得太早了。无论系统设置如何,Javascript 在
join()中默认使用逗号,并且在数组上使用toLocaleString()来发现该字符仅在 IE 中有效。此外,在我提供要下载的文件(如 csv)的情况下,那时我真的无法选择运行客户端脚本。