JavaはSystemを利用する.getProperty(「file.encoding」)符号化分析の取得

4480 ワード

転載は出所を明記してください.http://blog.csdn.net/loongshawn/article/details/50918506
  • 《Java利用System.getProperty("file.encoding")取得符号化分析》
  • 『Linuxの特殊ファイル-/dev/zero』
  • 『Linuxのブラックホール-/dev/null』
  • 1.0背景
    System.out.println(System.getProperty("file.encoding"));

    以前はずっとfileと思っていた.Encodingの符号化はシステムの符号化であり、最近まで奇妙な状況に遭遇した:WEBエンジニアリングで上記のコードで印刷された符号化はGB 18030であり、Linuxサーバにログインしてlocaleまたはvi/etc/sysconfig/i 18 nを実行して調べた符号化はUTF-8であり、両者が一致していないとは、サーバ符号化が変わったのではないかと疑い、この文章の思考を引き起こした.
    2.0 file.Encodingコードとは
    file.encodingの値は、各プログラムのmainエントリのjavaファイルの保存符号化です.JAvaファイルの符号化.
    次の2つの方法で検証します.
    1、javaファイル->プロパティ->text file encoding(otherの値)をクリックし、eclipseコンパイラを使用して、私が見たこのクラスIDEはUTF-8符号化を表示します.
    Java利用System.getProperty(
    2、javaクラスを実行することによって、この符号化を取得する.
    public static void main(String[] args){
             System.out.println(System.getProperty("file.encoding"));
    }

    実行結果は、図中にUTF-8として符号化され、IDEに表示されたものと一致することを示す.
    Java利用System.getProperty(
    このファイルのコードをISO-8859-1に変更したら、何のコードが表示されているか見てみましょう.
    Java利用System.getProperty(
    上図のjavaクラスは元のままですが、コードタイプがISO-8859-1に変更されただけで、私のローカルマシンのコードがUTF-8であることを覚えて、その運行結果を見てください.
    Java利用System.getProperty(
    結果は依然としてISO-8859-1であり、fileが見られる.Encodingが取得したのはmainエントリ関数のファイル符号化だけであり,システム符号化ではない.
    3.0 file.encodingコードは唯一ですか?
    Javaタイプごとにこのコードがあるのではないでしょうか.次に、2つのクラスをテストします.
    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

    Java利用System.getProperty(
    実際の出力から分かるようにfile.Encodingは唯一で、mainエントリ関数のjavaクラスファイル符号化と一致しています.