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


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

  • 相关阅读:
    Javascript闭包的一些研究
    pytorchvision安装问题
    CUDA 基础
    语音识别入门推荐文献【转】
    【e2e】espnet框架安装问题集锦
    维特比算法与beam search
    kaldi识别问题集锦
    语音识别-重要开源数据
    git提交失败总结
    钟南山病后反思: 寿命长短, 不取决于衰老和疾病【转】
  • 原文地址:https://www.cnblogs.com/softidea/p/5651319.html
Copyright © 2020-2023  润新知