unix 机器上的服务器始终使用 en 作为默认区域设置。
以下是区域设置输出
LANG=en_US
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=C
我只是不明白如果 LANG 设置正确,那么为什么服务器以 en locale 开头。
在 Linux/Unix/Mac 中,设置LC_ALL
and LANG
可以控制Java程序的默认区域设置。在 Windows 中,区域设置是从控制面板的区域和语言选项下设置的。
当 JVM 在 *nix 环境中启动时,它将执行以下操作:
- 扫描环境
LC_ALL
- If
LC_ALL
不存在,扫描环境LANG
- 如果 JVM 设置
user.language
设置后,使用它代替环境变量。
- 如果没有设置,则默认为
en_US
(我相信这是最后的失败案例)
在你的环境中,你有LC_ALL
set to C
,这只是 C 语言环境。这基本上是对未使用语言环境的日子的传统回退。
你可以改变LC_ALL
在你的情况下,然后重新启动你的 JVM,你应该得到一个新的值java.util.Locale.getDefault()
.
Example:
import java.util.Locale;
public class LocaleTest {
public static void main(String[] args) {
System.out.println(Locale.getDefault());
}
}
这里正在运行:
> LC_ALL=en_UK java LocaleTest
en_UK
> LC_ALL=ja_JP java LocaleTest
ja_JP
另请注意,如果您运行的是 Java 1.7.0-b147,则存在 JRE 无法识别区域设置的环境设置的错误,并且将始终使用默认系统区域设置。
错误报告在这里:https://bugs.java.com/bugdatabase/view_bug?bug_id=7073906 https://bugs.java.com/bugdatabase/view_bug?bug_id=7073906
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)