JVM이 입력과 출력으로 변환되는 데이터는 -Dfile.encoding 옵션에서 지정된 인코딩으로 변경되게된다.

따라서 WAS 구동의 JVM 파라미터 옵션에 -Dfile.encoding=UTF-8 과 같이 지정하면 명시적으로 UTF-8 charset을 사용하게된다.

 

파일이나 소켓 등으로 문자열 IO처리시, 문자열의 default charset은 -Dfile.encoding의 지정값을 따른다.

지정하지 않을경우 시스템의 기본 charset을 따르게 된다.


즉 new String(byte[] b) 또는 String getBytes() 실행시에도 default charset은charset은 -Dfile.encoding의 값을 따른다.

JVM에서 file.encoding과 다른 character encoding값으로 입/출력을 하고 싶다면 다음과 같이 사용한다.

 

package test;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class EncodingTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  String fileEncoding = System.getProperty("file.encoding");
  System.out.println("file.encoding=" + fileEncoding);
  String filePath = "../pluggers/files/data.txt";
  InputStream is = null;
  BufferedReader default_reader = null;
  BufferedReader euckr_reader = null;
  BufferedReader utf8_reader = null;
  BufferedReader iso8859_reader = null;
  
  String str = null;
  try {
   default_reader = new BufferedReader(new FileReader(filePath));
   str = default_reader.readLine();
   System.out.println("Default=" + str);

   is = new FileInputStream(filePath);

   euckr_reader = new BufferedReader(new InputStreamReader(is, "EUC-KR"));
   str = euckr_reader.readLine();
   System.out.println("EUC-KR=" + str);

   utf8_reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
   str = utf8_reader.readLine();
   System.out.println("UTF-8=" + str);

   iso8859_reader = new BufferedReader(new InputStreamReader(is, "ISO-8859-1"));
   str = iso8859_reader.readLine();
   System.out.println("ISO-8859-1=" + str);

  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}


출처 -  http://blog.naver.com/pluggers?Redirect=Log&logNo=150084889009 


'Development > Java' 카테고리의 다른 글

Thread pool  (0) 2012.03.16
java 어노테이션(Annotation)  (0) 2012.03.14
JVM 인코딩 설정(Dfile.encoding 옵션)  (0) 2012.03.13
자바빈즈(javabeans)  (0) 2012.03.11
java - StringTokenizer 클래스 및 split 메서드  (0) 2012.03.09
자바네트워크-UDP통신  (0) 2012.03.08
Posted by linuxism