오라클 한글깨짐현상.. 0 4 7,232

by 상상글 [2018.10.05 09:52:03]


로컬환경 : 

WIN7 ULTI 64BIT
오라클 클라이언트 설치버전 32BIT

JAVA 1.7 JDK

개발DB : 

NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET US7ASCII
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.2.0.4.0

 

 

 

 현재 인터넷에서 찾아본 방법 몇가지를 시도해보았으나, 

 혼자서 해결할수없다고 판단하여, 도움을 구하고자 질문드립니다.

 시도해본방법

  1: 환경변수 NLS_LANG 등록후 , AMERICAN_AMERICA.UC7ASCII 혹은

     KOREAN_KOREA.UC7ASCII , KOREAN_KOREA.ko16mswin949 등 바꾸는것등 시도.

  2. 처음에는 오라클클라이언트 64BIT를 설치하였으나,

     오라클클라이언트 32BIT 를 사용해야한다고해

     레지스트리에있는 ORACLE 관련 설정들 모두 삭제후 오라클클라 32BIT 재설치함.

 3.  DB TOOL 접속시, 캐릭터셋을 UTF8 or KO16MSWIN49 등등. 한글관련 캐릭터셋으로 시도해봄

 4. 로컬톰캣 구축 실행후, 이클립스 콘솔창에서 보여지는 SQL 조회결과역시 한글이 깨지게 나옴. 

 

그러나, 잘되고있는 다른사람 컴퓨터환경은 저랑 똑같은데 

오라클 클라이언트 32bit만 설치하고 오렌지툴로 바로 접속하니 한글안깨진다하더라고요.

도움주시면 감사하겠습니다...

환경구축이안되어, 쿼리분석하기가 너무힘드네요

 

 

 

 

 

 

 

 

 

by 신이만든지기 [2018.10.05 14:41:37]

DB의 캐릭터셋이 영문이네요. 

캐릭터셋을 설정하는 곳은 크게보아 입력, 출력 2군데가 있으며 질문자님께서는 출력부분에만 문자셋을 변경하신 겁니다. 입력단계, 즉 디비에 INSERT할 때 데이터베이스 엔진에서 한글을 지원하지 않으면, 클라이언트에서 아무리 한글을 제대로 집어넣어도 ???? 등으로 깨져 저장됩니다. 입력단계에서 깨져들어갔으니, 출력단계에서 아무리 바꿔봤자 한글이 깨진 상태로 보이는 거죠. 그러니 데이터베이스의 캐릭터셋을 변경하여 한글이 정상적으로 저장부터 되도록 해야 합니다.

NLS_CHARACTERSET US7ASCII

데이터베이스의 캐릭터셋을 변경하려면, 아래 링크를 참조하시거나

http://forgiveall.tistory.com/204

다시 한글 캐릭터셋으로 재설치하면 됩니다.

재설치 과정에서 Database Character Set에서 KO16MSWIN949를 선택하거나 UTF8 선택하시면 됩니다. 


by 상상글 [2018.10.05 15:19:44]

개발 DB의 캐릭터셋을 바꿀수 는 없습니다.

 

 

 


by 신이만든지기 [2018.10.05 15:49:07]

그렇다면 테이블을 생성할 때, 한글이 필요한 컬럼을 VARCHAR2 대신에  NVARCHAR2 로 생성한 뒤 데이터를 INSERT해보시기 바랍니다.

또는 데이터 입력시  INSERT INTO TABLE_NAME VALUES(N'한글') 처럼 다국어 입력을 해보십시오.

참고로 과거에 깨져서 들어갔던 한글은 이미 깨졌기 때문에 한글출력이 안됩니다. 새롭게 들어간 한글만 제대로 출력될 겁니다.


by 상상글 [2018.10.05 16:51:47]

아네 신규테이블은 상관없고요
기존에 있는 테이블에대해서 한글데이터를 안깨지게해서 보고싶은 상황입니다. 

추가로, 개발서버 DB환경은 제가 건드릴수없고요 
제 로컬에서 보여질때 개발서버의 출력 데이터만 안깨지고 나오면 좋겠네요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입