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语言环境启动。
在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