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开头。
答案 0 :(得分:23)
在Linux / Unix / Mac中,设置LC_ALL
和LANG
可以控制Java程序的默认语言环境。在Windows中,语言环境是通过“控制面板”在“区域和语言选项”下设置的。
当JVM在* nix环境中启动时,它将执行此操作:
LC_ALL
LC_ALL
不存在,请扫描环境LANG
user.language
,请使用它来代替环境变量。en_US
(我认为这是最终失败案例)在您的环境中,LC_ALL
设置为C
,这只是C语言环境。它基本上是一个传统的回退,当时没有使用语言环境。
您可以更改LC_ALL
,然后重新启动JVM,并为java.util.Locale.getDefault()
获取新值。
示例:
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无法识别区域设置的环境设置,并且始终使用默认的系统区域设置。
此处有错误报告:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7073906