Saturday, November 25, 2006
Java/자바] 한글 확장 완성형; MS949 / cp949 인코딩(Encoding) 문제 해결; 차이, 차이점
자바에서는 MS949 와 cp949 가 약간 다른 인코딩이었습니다.
MS949 : 한글 확장 완성형 (똠방각하 표현 가능)
cp949 / euc-kr : 한글 완성형 (똠방각하 불가능)
소스 파일의 인코딩을 명시적으로 지정해 줄 때 "똠"자를 처리하지 못하고
warning: unmappable character for encoding cp949
이런 경고가 출력되었고, "똠"자가 "?c"라는 글자로 깨졌습니다.
예를 들어 다음과 같습니다:
소스 파일명: Foo.java
이런 소스를 컴파일하고 실행하면:
1번째 실행 때는, 시스템 기본 인코딩을 사용했기에 문제가 없습니다.
2~4번째 실행 때는 cp949 등의 인코딩을 지정했기에 "똠"자가 깨졌습니다.
5번째 실행 때는 MS949 인코딩을 지정했기에 정상적으로 출력되었습니다.
자바에서는 반드시 MS949 인코딩을 사용해야 했습니다. 소스 내부에서 인코딩을 사용할 때에도 마찬가지입니다.
물론 한글 윈도우에서 한글 텍스트 파일을 사용할 때에는, 인코딩을 지정할 필요는 없습니다.
리눅스에서 사용한다든지 하는 좀 복잡한 상황에서의 문제입니다.
▶▶ [자바/Java] 유니코드 소스 파일 인코딩 인식시키기 - UTF-8 UTF-16 Unicode
MS949 : 한글 확장 완성형 (똠방각하 표현 가능)
cp949 / euc-kr : 한글 완성형 (똠방각하 불가능)
소스 파일의 인코딩을 명시적으로 지정해 줄 때 "똠"자를 처리하지 못하고
warning: unmappable character for encoding cp949
이런 경고가 출력되었고, "똠"자가 "?c"라는 글자로 깨졌습니다.
예를 들어 다음과 같습니다:
소스 파일명: Foo.java
public class Foo {
public static void main(String[] args) {
System.out.println("가나다라 똠방각하");
}
}
public static void main(String[] args) {
System.out.println("가나다라 똠방각하");
}
}
이런 소스를 컴파일하고 실행하면:
1번째 실행 때는, 시스템 기본 인코딩을 사용했기에 문제가 없습니다.
2~4번째 실행 때는 cp949 등의 인코딩을 지정했기에 "똠"자가 깨졌습니다.
5번째 실행 때는 MS949 인코딩을 지정했기에 정상적으로 출력되었습니다.
D:\Z>javac Foo.java && java Foo
가나다라 똠방각하
D:\Z>javac -encoding cp949 Foo.java && java Foo
Foo.java:4: warning: unmappable character for encoding cp949
System.out.println("가나다라 똠방각하");
^
1 warning
가나다라 ?c방각하
D:\Z>javac -encoding 949 Foo.java && java Foo
Foo.java:4: warning: unmappable character for encoding 949
System.out.println("가나다라 똠방각하");
^
1 warning
가나다라 ?c방각하
D:\Z>javac -encoding euc-kr Foo.java && java Foo
Foo.java:4: warning: unmappable character for encoding euc-kr
System.out.println("가나다라 똠방각하");
^
1 warning
가나다라 ?c방각하
D:\Z>javac -encoding MS949 Foo.java && java Foo
가나다라 똠방각하
D:\Z>
가나다라 똠방각하
D:\Z>javac -encoding cp949 Foo.java && java Foo
Foo.java:4: warning: unmappable character for encoding cp949
System.out.println("가나다라 똠방각하");
^
1 warning
가나다라 ?c방각하
D:\Z>javac -encoding 949 Foo.java && java Foo
Foo.java:4: warning: unmappable character for encoding 949
System.out.println("가나다라 똠방각하");
^
1 warning
가나다라 ?c방각하
D:\Z>javac -encoding euc-kr Foo.java && java Foo
Foo.java:4: warning: unmappable character for encoding euc-kr
System.out.println("가나다라 똠방각하");
^
1 warning
가나다라 ?c방각하
D:\Z>javac -encoding MS949 Foo.java && java Foo
가나다라 똠방각하
D:\Z>
결론
자바에서는 반드시 MS949 인코딩을 사용해야 했습니다. 소스 내부에서 인코딩을 사용할 때에도 마찬가지입니다.
물론 한글 윈도우에서 한글 텍스트 파일을 사용할 때에는, 인코딩을 지정할 필요는 없습니다.
리눅스에서 사용한다든지 하는 좀 복잡한 상황에서의 문제입니다.
▶▶ [자바/Java] 유니코드 소스 파일 인코딩 인식시키기 - UTF-8 UTF-16 Unicode
tag: java
자바 | Java
<< Home