database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 21474 게시물 읽기
No. 21474
JDBC thin연결시 한글깨짐..
작성자
이동식(tochiro)
작성일
2005-01-19 14:21
조회수
6,834

안녕하세여..^^ 몇일째 오라클 에서 한글깨지는 문제로 끙끙거리다 글 올립니다.

여기서도 해당글을 찾아서 읽어보았고 나름대로 해봤는데..잘안돼는거같아서 올리게 되었습니다.

windows 2000서버에 오라클 817을 설치했습니다.

설치된오라클 에서는

NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET WE8DEC

이며 오라클이설치된 2000서버의 NLS_LANG = AMERICAN_AMERICA.WE8DEC

 

그리고 테스트하는 로컬 컴터의 설정은 NLS_LANG = AMERICAN_AMERICA.WE8DEC 로 맞추었는데..

jdbc연결해서 데이터를 가져오면 한글이깨지는군요..

디비에 있는 데이터조회결과 '테스트1' 이라는 결과를 가져와야햐는뎅

System.out.println(rs.getString(1));
System.out.println(Convert.toKSC5601(rs.getString(1)));

결과......

?Œ½ºÆ?1
??스??1

 

위와같이 나오는군요 어카면 한글이 나올까요? 아 머리아프군여...한글..

이 글에 대한 댓글이 총 3건 있습니다.

Convert.toKSC5601 처럼 문자셋을 변환하는건 촌스러운 코딩법입니다. 성능 저하도 문제고 불필요한 변환이죠.

 

위의 방법은 과거 한글 환경이 제대로 지원안되던 환경에서 수행하던 방법입니다.

 

이미 오라클 JDBC나 WAS 측에서는 한글 문제가 없습니다.

 

 

그리고 서버의 캐릭터셋이 어떻게 되어있는지는 모르지만... 로컬쪽 NLS_LANG 설정도 문제가 있네요.

 

NLS_LANG = AMERICAN_AMERICA.KO16MSWIN949 로 하시기 바랍니다. (한글 확장완성코드입니다.)

김주현님이 2005-01-19 14:24에 작성한 댓글입니다.
이 댓글은 2005-01-19 14:26에 마지막으로 수정되었습니다. Edit

 

^^ 서버의 캐렉셋은 위에 적어뒀습니다.

 

오라클서버는 기존의 서비스를 하고있기때문에 당장 케렉셋을 바꿀수없는 상태입니다.

그래서 현재 세팅되어있는

NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET WE8DEC

을 베이스로 해서 테스트해야하니..한글 문제가 문제된것 같습니다.

 

테스트는 java application으로 하고있구여 WAS 풀등을 사용하는 경우가 아닙니다.

^^ 촌스러운 방법인지 몰라도

System.out.println(rs.getString(1));
System.out.println(Convert.toKSC5601(rs.getString(1)));

원래 나오는 getString()과 변환메소드후 결과를 비교해보기위해서 임의로 만들어진 메소드 입니다.

어케하면 한글나오게될지..테스트중이구요^^

 

AMERICAN_AMERICA.WE8DEC 케렉셋에서 한글 사용하기위한 방법을 찾고싶습니다.^^

제글에 관심가져 주셔서 감사합니다...^^

이동식(tochiro)님이 2005-01-19 14:35에 작성한 댓글입니다.

서버의 캐릭터셋을 WE8DEC 을 KO16MSWIN949  로 바꾸십시오.

 

WE8DEC는... 서유럽에서 1-byte 문자를 넣기 위해 고안한 캐릭터셋입니다. 그렇게 애초에 설치한 사람이 책임져야할 문제 같네요.

 

서버 Charset 변환하지않고 다른 방법 시도해도 궁극적으로 모두 문제를 일으키거나 제대로 되지 않을겁니다.

 

그리고 한국사람끼리 대화하는대는 "한국어"가 제일 편합니다. 그런데 사용하신 방법은 그걸 영어로 통역해주는 통역관을 사이에 두고 대화하는 것과 마찬가지입니다.

한국사람 <-> 영어 변환 통역가 <-> 한국사람

당연히 불편하고 지속적인 문제를 일으킵니다.

만약 모든 코드를 System.out.println(Convert.toKSC5601(rs.getString(1))); 식으로 짠다면 추후에 몽땅 걷어내는 불상사가 생기게 됩니다.

 

지금 바로잡고 나가는게 모든 면에서 이득입니다.

 

도움이 되었기를 바랍니다.

 

 

혹 위의 사항에 대해서 의문사항이나 기술지원이 필요하시면

http://www.kova.co.kr 을 통하여 연락 바랍니다.

김주현님이 2005-01-19 14:50에 작성한 댓글입니다.
이 댓글은 2005-01-19 14:58에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
21477게시판 쿼리 속도가 너무 느린데요.. [2]
김태우
2005-01-19
1707
21476exp/imp 시 문제 발생 [1]
글쓴이
2005-01-19
1616
21475아카이브 로그 생성시 발생한 오류 해결방법 좀 알려주세요~ [3]
김태진
2005-01-19
2547
21474JDBC thin연결시 한글깨짐.. [3]
이동식
2005-01-19
6834
21473union all 과 나누어 쿼리 실행했을 경우의 속도 차이??
곰두리아빠
2005-01-19
1713
21472자원반환이 안되요. Oracle Server 오작동??? [1]
서지수
2005-01-19
1010
21471이런것도 쿼리문이 가능할까요? [1]
궁금이
2005-01-19
1139
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다