글쓴이 :김덕태 1998년 1월 07일 19:25:44
In Reply to: 한 마디 더... 그리고 참고 posted by 김필호 on 1998년 1월 06일 20:42:24:
어떤 버그를 말씀하시는 지 모르겠지만,
4000바이트를 넘어가지 않는 다면 getBytes("KSC5601")은
문제가 없습니다.
4000바이트를 넘어가는 코드 변환을 하게 되면 제 자바 홈페이지
나와있는 대로 버그가 있습니다.
올리신 프로그램은 한줄씩 읽어서, getBytes("KSC5601")을 사용하여
KSC5601 코드로 변환하고, 한줄이 4000 바이트를 넘어가는 경우는
현실적으로 없을 것이므로 코드변환 버그는 발생하지 않을 것입니다.
만약, 말씀하신 버그가 엉뚱한 문자로 변환된다는 것을 지적하신 것이라면,
그건 문제의 원인을 잘못 짚으신 것입니다.
잘못의 원인은 DataInputStrem의 readLine()에 있으며,
이 메쏘드는 한글을 읽어낸 후 읽어낸 KSC5601 문자를
유니코드에서의 그 문자에 대응하는 한글 문자의 코드값으로 변환해야 하나
그렇게 변환하지 않았으므로, 잘못된 문자를 그 다음부터 제대로 변환해보았자
결과는 계속 잘못되게 되는 것입니다.
다시한번 강조하지만, new String(...getBytes("8859_1"), KSC5601)
메쏘드 및 그 아류에 해당하는 방법은 모두 정상적인 코드 변환이 아니라,
잘못된 코드변환을 교정하기 위한 trick에 불과한 것이며,
가능하면 정석대로 처리할 수 있는 방법을 찾아서 사용하는 것이
바람직하다는 것을 기억하십시오.