转载请注明来源: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

file.encoding到底指的是什么呢?的更多相关文章

  1. 系统变量file.encoding对Java的运行影响有多大?(转)good

    这个话题来自: Nutz的issue 361 在考虑这个issue时, 我一直倾向于使用系统变量file.encoding来改变JVM的默认编码. 今天,我想到, 这个系统变量,对JVM的影响到底有多 ...

  2. eclipse的使用-------Text File Encoding没有GBK选项的设置

    eclipse的使用-------Text File Encoding没有GBK选项的设置 2013-12-25 09:48:06 标签:java myeclipse使用 有一个项目是使用GBK编码的 ...

  3. BSP、PSP到底指什么?

    /************************************************************************* * BSP.PSP到底指什么? * 说明: * B ...

  4. readAsDataURL(file) & readAsText(file, encoding)

      readAsDataURL(file)会把文件内容转换为data类型的URL: data:text/plain;base64,b3JkZXItaWQJb3JkZXItaXRlbS1p... 这种d ...

  5. http协议无状态中的 "状态" 到底指的是什么?!

    引子: 最近在好好了解http,发现对介绍http的第一句话[http协议是无状态的,无连接的]就无法理解了:无状态的[状态]到底指的是什么?! 找了很多资料不仅没有发现有一针见血正面回答这个问题的, ...

  6. Android studio 配置file encoding 无效,中文乱码解决办法

    通过配置Android studio 配置file encoding 无效,中文乱码,问题出现在java编译的时候jack采用了默认编码(中文windows默认的GBK编码)而乱码,所以不管更改bui ...

  7. Jenkins maven 构建乱码,修改file.encoding系统变量编码为UTF-8

    一切都是windows的控制台默认编码GBK问题 情景: 使用jenkins构建,console 输出的中文乱码.代码编码格式是utf-8,因为Jenkins会默认读取当前系统的编码格式,导致构建日志 ...

  8. jenkins使用slave报编码错误[WARNING] File encoding has not been set, using platform encoding ANSI_X3.4-1968, i.e. build is platform dependent!

    jenkins:master-slave 模式: master编码配置: slave编码配置: 可以看出master 和 slave的配置是一样的,但是当项目在slave上执行的时候,偶尔会报如下错误 ...

  9. classpath到底指的哪里

    之前一直对classpath不太明白到底指的哪里,今天研究了一下,做个总结.. classpath顾名思义就是指类路径,但是这样解释可能还是不明白,这里拿一个SpringBoot应用编译后生成的tar ...

随机推荐

  1. Android系统的“程序异常退出”[转]

    在应用运行过程中,有很多异常可能会发生,而我们希望在异常发生的时候第一时间的保存现场. 如何处理未捕获的异常呢? 首先我们要实现一个接口  java.lang.Thread.UncaughtExcep ...

  2. TCP/IP笔记 四.应用层(2)——FTP

    1. FTP(File Transfer Protocol) 文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务. FTP 的主要功能是减少或消除在不同操作系统下处理 ...

  3. FMDB 直接将查询结果转化为字典

    今天学习FMDB框架,发现非常好用的一点,就是就以把查询结果直接转化为字典 NSString *querySql = @"select * from stuInfo"; NSMut ...

  4. Android应用开发提高篇(4)-----Socket编程(多线程、双向通信)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/04/2379628.html 一.概述 关于Socket编程的基本方法在基础篇里已经讲过,今天把 ...

  5. Andy's First Dictionary

    Description Andy, 8, has a dream - he wants to produce his very own dictionary. This is not an easy ...

  6. Last Defence (run time error)

    Last Defence时间限制:1000 ms | 内存限制:65535 KB描述Given two integers A and B. Sequence S is defined as follo ...

  7. php学习笔记(2)

    1.算数运算 <?php $a = 8; $b = 2; $c = 3; echo $a+$b."<br>\n"; echo $a-$b."<br ...

  8. android LayoutInflater的使用

    看其继承关系: public abstract class LayoutInflater extends Object java.lang.Object ↳ android.view.LayoutIn ...

  9. C# 读书笔记之访问关键字this和base

    this 关键字引用类的当前实例.静态成员方法中不能使用this关键字,this关键字只能在实例构造函数.实例方法或实例访问器中使用. base 关键字用于从派生类中访问基类的成员. 指定创建派生类实 ...

  10. discuz默认模板文件结构详解-模板文件夹介绍

    | — template — default   系统内置风格模板(默认风格)| — template — default  – discuz_style_default.xml  风格安装文件,可用 ...