使用java opts将file.encoding设置为无效的charset

时间:2014-06-24 00:17:12

标签: java character-encoding

我有以下课程:

public class PrintCharSet{
    public static void main(String[] args){
        System.out.println("System Props (file.encoding): " + System.getProperty("file.encoding"));
        System.out.println("Default Charset: " + java.nio.charset.Charset.defaultCharset());
    }
}

当我在My Linux上运行时,我得到了:

$ java PrintCharSet
System Props (file.encoding): UTF-8
Default Charset: UTF-8

当我通过file.encoding prop为这样的JVM指定一个有效的字符集时,它可以工作:

$ java -Dfile.encoding=WINDOWS-1256 PrintCharSet 
System Props (file.encoding): WINDOWS-1256
Default Charset: windows-1256

但问题是,当我使用无效的字符集名称时,为什么我没有得到一些初始化错误而不是使用默认值(就好像我为file.encoding道具提供空值以指示初始化阶段的问题)

$ java -Dfile.encoding=INALID_CHARSET_NAME PrintCharSet 
System Props (file.encoding): INALID_CHARSET_NAME
Default Charset: UTF-8

1 个答案:

答案 0 :(得分:0)

此行为定义不明确,sun / oracle将其视为内部实现细节。根据sun / oracle的说法,“更改VM和运行时系统使用的默认编码的首选方法是在启动Java程序之前更改底层平台的语言环境。”

http://bugs.java.com/view_bug.do?bug_id=4163515