为什么Oracle的JDK(8,7及更低?)不考虑LC_ *环境变量?

时间:2014-04-02 21:26:09

标签: java localization environment-variables

此示例输出未提供我对区域设置的期望...虽然已经使用Java 8编译和运行,但问题也显示在Java 7上。来自Oracle的两个JDK都完全修补了Ubuntu 13.10。

fge@alustriel:/tmp$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
fge@alustriel:/tmp$ cat Main.java 
import java.nio.charset.Charset;

public final class Main
{
    public static void main(final String... args)
    {
        System.out.println(Charset.defaultCharset());
        System.out.println(System.getProperty("file.encoding", "UNKNOWN!"));
    }
}
fge@alustriel:/tmp$ javac Main.java
fge@alustriel:/tmp$ java Main
UTF-8
UTF-8
fge@alustriel:/tmp$ LC_ALL=fr_FR.ISO-8859-1 java Main
US-ASCII
ANSI_X3.4-1968
我的系统上安装了

fr_FR.ISO-8859-1;那么,为什么是默认字符集US-ASCII?此外,file.encoding也设置为ASCII,因为ANSI_X3.4-1968 looks like it is an alias to ASCII即使我的系统完全支持ISO-8859-1 ......

0 个答案:

没有答案