getBytes("KSC5601")은 일반적인 경우 잘 동작하는 것으로 보입니다.


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]

글쓴이 :윤경구 1998년 1월 08일 17:05:03

In Reply to: [재질문] getBytes("KSC5601") 에 관하여... posted by 김필호 on 1998년 1월 08일 13:30:51:

자바는 내부적으로 스트링을 유니코드로 처리하기 때문에
String str="가각";
이란 명령은 "가각"이란 문자를 일단 유니코드로 변환할 것입니다.
(물론 컴파일한 사용자의 호스트가 기본 인코딩이 KSC5601일 경우에.
이것이 귀찮으면 native2ascii 유틸을 사용하여 아예 유니코드로 소스를 변경할 수 있겠지요)
str.getBytes("KSC5601");
이란 명령은 유니코드인 str을 KSC5601 인코딩으로 재배열하는 것이겠지요.
실제 바이트를 구하여 인쇄해보면 정상적으로 값이 나옵니다.
"가각"의 경우 값은 -80, -95, -80, -94
unsigned로 생각하면 176, 161, 176, 162입니다.
(자바에는 unsigned가 없으니까요...)
다음 다시 유니코드로 변환하기 위해 구한 바이트 b를
new String(b, "KSC5601");
을 하면 정상적인 유니코드 문자열을 구할 수 있습니다.
자바 1.1에서 정상적으로 스트링 출력이 되는 것은 유니코드 인코딩되어 있다고 볼 수 있을 것입니다.
제 생각이 맞는지...
(물론 김덕태님이 지적한 4000 바이트 한계는 테스트해보지 않았습니다.
JDK 1.1 초기 버전에는 한글 소스가 아예 컴파일 에러가 나던 것이 기억나는군요.)
이 기회에 좀 명확하게 정리가 되었으면 좋겠습니다.


다음 글들:



이어서 글올리기(답하기)

이름:
E-Mail:
제목:
내용:
관련 URL(선택):
URL 제목(선택):
관련 이미지 URL:


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]