5-3.(1) FileEncoding


p.54
1.ハングルコード
  • InputStreamオブジェクトは、文書の符号化部屋で文書
  • を指定することができる.
  • フォーマット)新しいInputStreamReader(バイトベースのストリームオブジェクト、符号化);
  • 2.符号化方式
  • のハングル符号化方式は主にUTF-8&EUC-KRの2種類の
  • がある.
  • オリジナルハングルウィンドウCP 949
  • を使用
  • ウィンドウから開発されたマイクロソフトはEUC-KRに拡張された.
  • ,MS 949
  • CP 949はEUC-KRの拡張であり、その下位互換性は
  • である.
  • ANSIは英語表記のために制定されたコード仕様で、それ自体にハングルはありません.
    その後、EUC-KR(Unixシリーズ)、CP 949(ウィンドウ)としてハングルが含まれる.
  • MS949
  • ウィンドウのデフォルトのハングルエンコーディング(ANSIシリーズ)
  • UTF-8
  • Unicode UTF-8符号化
  • 文字と数字:1 byte、韓国語:3 byte=>可変
  • US-ASCII
  • 英語コード
  • FileInputStream&InputStreamReaderの例
    T09_FileEncodingTest
  • FileInputStreamオブジェクトを作成します.
    このオブジェクトをパラメータとして受け入れるInputStreamReaderオブジェクトを作成します.
  • バイト入力ストリームを接続し、文字入力ストリームリーダーに変換します.
  • 保存コード
  • と同じように読み込まなければなりません!!
  • public class T09_FileEncodingTest {
    	public static void main(String[] args) {
    		//파일 인코딩을 이용하여 읽어오기
    		FileInputStream fis = null; //바이트기반스트림
    		InputStreamReader isr = null;//문자기반스트림
    		
    		try {
            		fis = new FileInputStream("d:/D_Other/test_utf8.txt");
    			//fis = new FileInputStream("d:/D_Other/test_ansi.txt");
    //			isr = new InputStreamReader(fis, "cp949"); //cp949방식으로 읽어보기
    			isr = new InputStreamReader(fis, "UTF-8");
    //			isr = new InputStreamReader(fis, "MS949");
    //			isr = new InputStreamReader(fis, "EUC-KR");
    			
                		int c;
    			
    			while((c=isr.read())!=-1) {
    				System.out.print((char)c);
    			}
    			
    			System.out.println();
    			System.out.println("출력 끝...");
    			
    			isr.close();//보조스트림 닫으면 기반스트림 닫고 보조스트림 닫는다. 
    			//fis.close(); 굳이 안해줘도 된다.
    		}catch(IOException ex) {
    			ex.printStackTrace();
    		}
    	}
    }

  • ansi方式
    :cp 949、MS 949、EUC-KR全読

  • UTF-8方式
    :UTF-8のみで読み込む
  • OutputStreamWriterとInputStreamReaderの例
    OutputStreamWriter
  • OutputStream(バイトベースの出力オブジェクト)をWriter(文字ベースの出力オブジェクト)のオブジェクトに変換
    このオブジェクトは、出力時に「符号化」を指定して
  • を出力することもできる.
    T10_FileEncodingTest
    public class T10_FileEncodingTest {
    	public static void main(String[] args) throws IOException {
        	//키보드로 입력한 내용을 파일로 저장하는데 
    		//out_utf8.txt 파일은 'utf-8'인코딩 방식으로,
    		//out_ansi.txt 파일은 'ms949'인코딩 방식으로 저장한다.
    		
    		InputStreamReader isr = new InputStreamReader(System.in); //문자기반
    		
    		//파일 출력용
    		FileOutputStream fos1 = new FileOutputStream("d:/D_Other/out_utf8.txt");//바이트기반
    		FileOutputStream fos2 = new FileOutputStream("d:/D_Other/out_ansi.txt");
    		
    		OutputStreamWriter osw1 = new OutputStreamWriter(fos1, "utf-8"); //문자기반
    		OutputStreamWriter osw2 = new OutputStreamWriter(fos2, "ms949");
    		
    		int c;
    		
    		System.out.println("아무거나 입력하라");
    		
    		while((c=isr.read())!=-1) {
    			osw1.write(c);
    			osw2.write(c);
    		}
    		System.out.println("작업 완료...");
    		
    		isr.close();
    		osw1.close();
    		osw2.close();
    	}
    }