设为首页 加入收藏

TOP

Java 中关于System property 之 file.encoding
2015-08-31 21:23:26 来源: 作者: 【 】 浏览:24
Tags:Java 关于 System property file.encoding

通过代码


System.getProperty("file.encoding")


可以获得file.encoding的值


问题1:file.encoding的值是什么呢?? 这个一开始我认为是操作系统的编码


但我错了,它的值为保存每个程序的main入口的那个java文件的保存编码(点击文件-->属性-->text file encoding(other的值),这是使用eclipse 编译器)


通过以下的代码即可证明:


/**
?* Test.java源代码文件
?*/
public class Test {
? ? public static void main(String[] args) {
? ? ? ? System.out.println(System.getProperty("file.encoding"));
? ? ? ? //Test2.printEncoding();
? ? }
}


1、文件保存的编码为:GB2312 时


编译执行之后,得到的结果为:


GB2312?


2、文件保存的编码为:GBK 时


编译执行之后,得到的结果为:


GBK


3、文件保存的编码为:UTF-8时


编译执行之后,得到的结果为:


UTF-8


从上面的三个结果可以看出,file.encoding的值并不是操作系统os的默认编码


而是main入口函数所在的类的保存编码.


但是这时想到了另一个问题,


问题2:是不是每个java文件都有自己的file.encoding呢?


于是我写了另一个类做试验,添加了类文件Test2.java


/**
?* Test2.java源代码文件
?*/
public class Test2 {
? ? public static void printEncoding(){
? ? ? ? System.out.println(System.getProperty("file.encoding"));
? ? }
}


并将源文件Test.java的代码修改为:


/**
?* Test.java源代码文件
?*/
public class Test {
? ? public static void main(String[] args) {
? ? ? ? System.out.println(System.getProperty("file.encoding"));
? ? ? ? Test2.printEncoding();//添加了这个命令
? ? }
}


这时我将Test.java的保存编码设置为:utf-8


将Test2.java的保存编码设置为:GBK


根据问题2我最原始的假设那么


编译运行这两个文件之后得到的结果应该为:


utf-8


GBK


但事实是运行后的结果为:


utf-8


utf-8


于是得出了结论是:


在一个运行的应用程序中


file.encoding的值只有一个,并且值为入口函数的保存编码的值


至于file.encoding在代码中的代码有哪些应用,以后更深入时再讨论.


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇理解并掌握 JavaScript 中 this .. 下一篇Java中通过反射调用类中的方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: