해결!!!!!!!!!!!!!!!!!!!!!!!


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

글쓴이 :전응식 1998년 3월 02일 11:13:14

In Reply to: 더 적절한 방법. posted by 김덕태 on 1998년 2월 27일 11:41:35:

결과가 느려서 죄송합니다.
그동안 저의 Oracle DB가 내려가서 작업을 못했다가,
오늘 DB가 올라와서 Test를 하였습니다.


먼저 나중에 올려주신 InputStream의 readChar() Method를 사용하여
Test를 하였더니 한글이 제대로 나오더군요.


이거야 말로 장장1주일 만의 성과라할수 있게죠.


앞으로도 저와 같은 개발환경에서 개발을 하신다면,
이곳에 올려진 글을 참고로 하여 개발을 하였으면 하네요..


한글이 제대로 나온 기념으로 제가 그동안 맞현던 부분과
해결방법을 적어놓을려고 합니다.


우선
Oracle에서 제공되어지는 메소드중 getString은 한글과 관련하여,
3:2의 비율로 저장되어진 한글을 가지고 오지 못하게 되어있는것 같습니다.
아마 getString Method의 버그가 아닐지.


그래서 다른 Method를 사용하셔야 되는데 저는
Stream을 사용하여 가져왔습니다.


getUnicodeStream을 사용하여 JDK의 InputStream에 저장하고,
이것을 다시 DataInputStream으로 생성하여 이것을 다시 readChar를
(readChar로 가져오시지 않으면 상위 바이트에 '00'가 입력이 됨)
이용 char형으로 변화 다시 String형으로 변환하여,
한글이 제대로 지원되게 하였습니다.
참고로 저의 Oracle DB 의 LANG_SET은 KSC5601로 셋팅이 되어있습니다.
앞으로 TEST할것이 몇가지 더 있는데 충분히 가능하리라 생각되어짐니다.


<소스>

      
InputStream input = results.getUnicodeStream(i) ;
DataInputStream pdataInputStream = new DataInputStream(input) ;
String str = "" ;
char testchar[] ;
int k=0, kk = 0 ;
if(input==null) System.out.println("input null") ;
try
{
testchar = new char[8] ;
for(kk = 0 ; kk<8 ; kk++)
testchar[kk] = pdataInputStream.readChar() ;
str = new String(testchar) ;
System.out.println(fromUni12(str)) ;
//이부분은 코드값을 보기 위해 만든것임..
for(int p=0;p<16;p++)
{
char c = str.charAt(p) ;
System.out.println(Integer.toHexString(c)+",") ;
}
}


앞으로 김덕태님의 많은 자문을 부탁드리며
다시 한번 그동안 김덕태님의 자문에 감사드립니다.



다음 글들:



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

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


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