'LC_ALL=fr_FR.UTF-8 date +%x' 是否应该在不同机器上提供一致的结果?

'LC_ALL=fr_FR.UTF-8 date +%x' 是否应该在不同机器上提供一致的结果?

根据手册页,实用程序的格式说明符应使用区域设置特定的日期格式%xdate但是,当我指定相同的安装区域设置并在两台不同的计算机上尝试时,每台计算机上都会得到不同的格式:

在机器“A”上:

$ locale -a | grep fr_FR
fr_FR
fr_FR.ISO8859-1
fr_FR.ISO8859-15
fr_FR.UTF-8
$ LC_ALL=fr_FR.UTF-8 date +%x
31.05.2012

在机器“B”上:

$ locale -a | grep fr_FR
fr_FR.utf8
$ LC_ALL=fr_FR.UTF-8 date +%x
31/05/2012

我看了一下http://demo.icu-project.org/icu-bin/locexp?d_=en&_=fr_FR,“短日期”部分看起来好像机器“B”就在这里。或者我是否误解了某些内容,实际上区域设置并没有绝对指定日期格式,并且跨实现会出现这种变化?

编辑:嗯..没有接受者...如果我说机器“A”是 OS X Lion,机器“B”是 Ubuntu 12.04,这两种机器都可以合理地期望具有正确的国际化/,这会更有趣吗?本地化设置?

答案1

区域设置取决于实现。尽管大多数现代 unice 确实使用xx_YYxx_YY.charset,但甚至连语言环境名称也无法保证。除了在C和区域设置之外,您不能确定在不同的计算机上会得到相同的结果POSIX


作为一个法国人,我会说B是对的,A是错的。在法国,日期不使用点分隔。 (它们可能用于其他法语国家;也许fr_CH应该有点。)

相关内容