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 |
자바빈즈(javabeans) (0) | 2012.03.11 |
java - StringTokenizer 클래스 및 split 메서드 (0) | 2012.03.09 |
자바네트워크-UDP통신 (0) | 2012.03.08 |