현재 jdbc를 이용하여 db에 접속하고 있습니다.
클라이언트 - 리눅스 (데몬서버) - DB
db의 로케일은 en_us.utf8 로 되어있구요, jdbc 연결 설정에도 DB_LOCALE=en_us.utf8;CLIENT_LOCALE=en_us.utf8;
를 추가해서 접속을 하고 있습니다...만,
자바 데몬이 실행되는 리눅스 서버의 로케일은 en_US, file.encoding 은 ISO8859-1로 되어있고,
데몬서버 자체는 windowXP (ko_kr, MS949 ) 에서 컴파일되어 실행만 리눅스에서 되는 상태입니다
(DB와 리눅스 서버의 locale 및 encoding 은 변경이 불가능 합니다)
db의 데이터를 select 하여 가져오면 클라이언트에서 깨진 한글을 볼 수가 있고, 자바 데몬서버의 로그파일을 확인해 봐도 한글이 깨진 상태로 기록되어 있습니다.
그리고 클라이언트에서 한글을 전송하면, 자바 데몬서버의 로그파일에는 한글이 정상적으로 보여지지만, An illegal character has been found in the statement.[-202] 에러가 발생하여 db에 insert를 하지 못하고 있습니다.
접속 프로퍼티는
jdbc:informix-sqli:// IP / DB명:INFORMIXSERVER= SERVER명;
DB_LOCALE=en_us.utf8;CLIENT_LOCALE=en_us.utf8;
NEWLOCALE=ko_kr,en_us;NEWCODESET=KSC5601,utf8,57372;
으로 설정하였습니다.
(참조 : http://door83.blog.me/80095922624 )
NEWLOCALE=ko_kr,en_us;NEWCODESET=KSC5601,8859-1,819; 또는
NEWLOCALE=en_us,en_us;NEWCODESET=8859-1,utf8,57372;
이렇게 해봐도 마찬가지 입니다.
그리고, 프로퍼티에 locale 과 codeset 설정을 하지 않았을 때에는 자바 소스 상에서
new String(data.getBytes("8859_1"), "KSC5601");
로 변환하는 걸로 시도해 보았습니다만 마찬가지 였습니다.
도대체.. 뭐가 문제일까요..?
조언 부탁드립니다..
|