file.encoding到底指的是什么呢?

简介:   转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50918506 《Java利用System.getProperty(“file.

 

转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50918506

1.0 背景

System.out.println(System.getProperty("file.encoding"));

 

以前一直以为file.encoding的编码就是系统的编码,直到最近碰见一个怪异的情况:WEB工程中通过上述代码打印出来的编码是GB18030,而登录Linux服务器执行locale或者vi /etc/sysconfig/i18n查出来的编码是UTF-8,竟然两者不一致,一度怀疑是不是服务器编码变了,引发了这篇文章的思考。

2.0 file.encoding编码是什么

file.encoding的值保存的是每个程序的main入口的那个java文件的保存编码,是.java文件的编码

以下两种方式查验:

1、点击java文件–>属性–>text file encoding(other的值),使用eclipse 编译器,我查看的这个类IDE显示的是UTF-8编码。

这里写图片描述

2、通过运行java类来获取该编码。

public static void main(String[] args){
         System.out.println(System.getProperty("file.encoding")); }

运行结果如下,图中显示编码为UTF-8,说明和IDE中显示的一致:

这里写图片描述

如果把这个文件的编码改成ISO-8859-1,看看显示的是什么编码?

这里写图片描述

上图中还是原来的那个java类,只不过编码类型改成了ISO-8859-1,记住我的本地机器的编码为UTF-8,看看其运行结果:

这里写图片描述

结果仍然是ISO-8859-1,可见file.encoding获取的仅仅是main入口函数的文件编码,并非是系统编码。

3.0 file.encoding编码是唯一的么

是不是每个java类型都有一个这个编码,下面我们测试一下,分别有两个类:

Test.java 采用ISO-8859-1文件编码:

public class Test {

    public static void printEncoding(){ System.out.println(System.getProperty("file.encoding")); } }

FileUpload.java 采用UTF-8文件编码:

public class FileUpload {

    public static void main(String[] args){ System.out.println(System.getProperty("file.encoding")); Test.printEncoding(); } }

预想,应该输出:UTF-8和ISO-8859-1。

实际输出:

UTF-8
UTF-8

这里写图片描述

从实际输出可以看出,file.encoding是唯一的,与main入口函数的java类文件编码保持一致。

http://blog.csdn.net/loongshawn/article/details/50918506

 

相关文章
|
1月前
|
监控 C#
55.c#:file类
55.c#:file类
16 1
|
8月前
File类
File类
29 0
File类的了解和使用
File类的了解和使用
126 0
File类的了解和使用
|
存储 Linux Python
Python文件相关知识点strip、open、read、write、close、readline、readlines、encoding、encode、decode
文件的作用: 可以永久的保存数据. 文件在硬盘中存储的格式是二进制. 打开文件 读写文件 关闭文件 打开文件, 是文件从硬盘中存到内存中 open(file, mode=‘r’, encoding) file 要操作的文件名字, 类型是 str mode, 文件打开的方式, r(read) 只读打开, w(write) 只写打开 a(append) 追加打开 encoding 文件的编码格式, 常见的编码格式有两种, 一种是gbk, 一种是utf-8 返回值, 文件对象, 后续所有的文件操作,都需要通
287 1
Python文件相关知识点strip、open、read、write、close、readline、readlines、encoding、encode、decode
|
C#
30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集
30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集
100 0
30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集
|
XML Java Android开发
eclipse设置全局编码为UTF-8的方法
eclipse设置全局编码为UTF-8的方法
619 0
|
Java Linux
小师妹学JavaIO之:File copy和File filter
小师妹学JavaIO之:File copy和File filter
File类的使用(一)上
File类的使用(一)
155 0
File类的使用(一)上
|
编解码 Python
Python 技术篇-含中文编码的代码运行方法,(unicode error) ‘utf-8‘ codec can‘t decode问题原因及解决方法
Python 技术篇-含中文编码的代码运行方法,(unicode error) ‘utf-8‘ codec can‘t decode问题原因及解决方法
451 0
Python 技术篇-含中文编码的代码运行方法,(unicode error) ‘utf-8‘ codec can‘t decode问题原因及解决方法