김덕태


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

글쓴이 :김덕태 1998년 1월 07일 19:09:46

In Reply to: 감사합니다. posted by 김필호 on 1998년 1월 06일 16:48:21:

DB의 경우도 비슷합니다.
즉, 자바프로그램에서 SQL 문장을 DB에 전달할 때, 그리고 DB의 자료를
자바 프로그램으로 가져올 때, JDBC 드라이버라는 S/W 계층을 통과하게 되는 데,
이때, JDBC 드라이버가 코드 변환을 하게 됩니다.


문제는 이 JDBC 드라이버가 코드 변환을 우리에게 맞지 않는 방식대로
한다는 것입니다.
그러한 경우, 이전에 올린 방법대로 DB로부터 데이타를 가져올때는
잘못 변환된 코드를 원래의 바이트 배열로 돌려놓은 후,
다시 스트링으로 변환하는 trick을 쓸 수 있는 것입니다.
마찬 가지로, SQL 문장을 전달할 때도, 그냥 전달하는 것이 아니라, 잘못된 코드변환에
한글을 예를 들어 8859-1 문자인 것차람 가장하여 스트링으로 만들어 전달해주면
이 또한 한글을 포함하는 SQL 문장을 전달할 수 있습니다.


이와 같은 해결책은 완전한 것이 될 수 없으며,
그 이유는 JDBC 드라이버가 어떤 인코딩의 코드로 변환하는 지
각 JDBC 드라이버에 대해서 정확히 알아내야만
이러한 trick이 먹혀들어가기 때문입니다.


많은 경우, 8859_1 인코딩의 코드와 변환하지만,
그렇지 않은 경우도 있습니다.
즉, 8859_9 (최근의 mSQL JDBC 드라이버를 제외한 이전의
드라이버는 8859_1이 아닌 8859_1) 인 경우도 있고, UTF8인 경우도
있습니다.


완전한 해결책은 JDBC specification 에 다국어 지원 기능을 표준화시켜 추가되는 것이고,
여기에는 4가지 방법이 있을 수 있는데 그 지원의 용이성 순으로 나열하면,


1. JDBC 드라이버에서 변환하는 인코딩을 알아내는 표준화된 방법을 제공하거나,
2. JDBC 드라이버에서 변환하는 인코딩을 지정할 수 있거나,
3. JDBC 드라이버가 DB의 디폴트 인코딩을 알아내어
그에 맞게 코드변환을 하거나,
4. JDBC 드라이버의 인코딩 및 DB의 인코딩을 모두 UTF8 인코딩으로 맞추어 놓는 것입니다.


이 방법들은 표준화의 문제이지 개별 프로그래머가 할 수 있는 방법이 아닙니다.



더 자세한 것은 저도 좀더 조사해보아야 하나, DB의 한글 문제의 핵심은
코드변환에 있습니다.





다음 글들:



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

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


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