Java IO操作の文字符号化

7990 ワード

説明
Java開発において、最も一般的な符号化タイプはISO 8859-1、GBK/GB 2312、Unicode、UTF-8などの符号化フォーマットである.
  • ISO 8859-1:単バイトコードに属し、0~255の文字範囲しか表示できない.主に英語に応用される.
  • GBK/GB 2312:中国語コードに属し、漢字を表すために専用され、2バイトコードである.GBKは簡体字中国語と繁体字中国語を表すことができる.GB 2312は簡体字中国語のみを表し、GBKはGB 2312と互換性がある.
  • Unicode:Javaでこの符号化を使用するのは、最も標準的な符号化であり、16進数符号化を使用するが、ISO 8859-1とは互換性がない.
  • UTF:UTFはISO 8859-1に対応しており、同僚はすべての言語文字を表すために使用することができ、UTF符号化は不定長であり、各文字は1~6バイトである.一般的に中国語のWebページでこのコードを使用すると、スペースを節約できます.

  • ネイティブのエンコード表示を取得
    システムクラスにより、システムに関する情報を取得できます.
    public class Demo {
    	public static void main(String[] args) {
    		
    		//          
    		System.getProperties().list(System.out);
    		
    		//         
    		System.out.println( System.getProperty("file.encoding") );	// GBK
    	}
    }
    

    コンソール出力:
    コンソールの出力が多すぎるため、一部を切り取ります
    -- listing properties --
    java.runtime.name=Java(TM) SE Runtime Environment
    sun.boot.library.path=D:\JDK\jdk1.8.0_91\jre\bin
    java.vm.version=25.91-b15
    java.vm.vendor=Oracle Corporation
    java.vendor.url=http://java.oracle.com/
    path.separator=;
    java.vm.name=Java HotSpot(TM) 64-Bit Server VM
    file.encoding.pkg=sun.io
    user.script=
    user.country=CN
    sun.java.launcher=SUN_STANDARD
    sun.os.patch.level=
    java.vm.specification.name=Java Virtual Machine Specification
    user.dir=E:\WorkspaceEclipse\java8Study
    java.runtime.version=1.8.0_91-b15
    java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
    java.endorsed.dirs=D:\JDK\jdk1.8.0_91\jre\lib\endorsed
    os.arch=amd64
    java.io.tmpdir=C:\Users\Wayfreem\AppData\Local\Temp\
    line.separator=
    

    ストリームによるエンコーディング
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
     
    public class Demo {
    	public static void main(String[] args) throws Exception {//         
    		File file = new File("e:" + File.separator + "demo" + File.separator + "my.txt");
    		if (!file.getParentFile().exists()) {
    			file.getParentFile().mkdirs();
    		}
    		OutputStream out = new FileOutputStream(file);
    		//       out.write("         ".getBytes());//       
    
    		out.write("         ".getBytes("ISO8859-1"));//     
    		out.close();
    	}
     
    }