Locale.getDefault()返回EN总是(Locale.getDefault() retu

2019-07-29 11:58发布

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设置正确,那么为什么服务器有连接区域开始不明白。

Answer 1:

在的Linux / Unix / Mac上,设置LC_ALLLANG可以控制Java程序的默认语言环境。 在Windows中,区域设置从控制面板设置,区域和语言选项下。

当JVM在* nix的环境下启动时,它会做到这一点:

  • 扫描环境LC_ALL
  • 如果LC_ALL不存在,扫描环境LANG
  • 如果JVM设置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不承认区域环境设置中的错误,并且将始终使用默认的系统区域设置。

这里bug报告: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7073906



文章来源: Locale.getDefault() returns en always