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では、Javaプログラムのデフォルトロケールを設定LC_ALL
および制御できます。LANG
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