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