此示例输出未提供我对区域设置的期望...虽然已经使用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 ......