IT/Oracle

SQL Tool Orange 오라클 한글 깨짐 조치방법 (NLS_LANG, al32utf8 / KO16KSC5610, NLS_CHARACTERSET / NLS_NCHAR_CHARACTERSET 차이점, nvarchar / varchar 차이점)

귀차니즘 극복 2023. 1. 12. 11:26
728x90
반응형

간만에 개발환경을 세팅하면서 오라클 한글 깨져보이는 현상이 나와 클라이언트 설정방법을 남겨봅니다.

 

실행 환경은 Oracle 19C, Orange for  6.0 DBA 에디션 입니다.

 

증상

 

테이블의 주석정보를 조회했는데 한글이라 모두다 "?"로 한글이 깨져서 보이게 됩니다.

 

 

 

 

접속하려는 오라클DB의 캐릭터셋 설정을 확인해 봅니다.

 

 

NLS_NCHAR_CHARACTERSET은 UTF8로 되어 있고,

 

NLS_CHARACTERSET은 AL32UTF8로 되어 있습니다.

 

 

이 두개의 차이점은 무엇일까요?

 

NLS_CHARACTERSET : char, varchar와 같은 데이터 타입에서 사용하는 문자집합


NLS_NCHAR_CHARACTERSET : nchar, nvarchar와 같은 데이터 타입에서 사용하는 문자집합

 

 

 

nchar와 char의 차이점은 무엇일까요?

 

varchar : 바이트 수 기준으로 한 가변 문자열

 

nvarchar : 글자 수를 기준으로 한 유니코드 지원 가변 문자열

 

 

반응형

 

변경 설정 적용

 

NLS_NCHAR_CHARACTERSET은 UTF8로 되어 있기 때문에, AMERICA_AMERICAN.AL32UTF8로 설정해서 접속해봅니다.

 

 

 

 

다시 테이블 코멘트에 있는 한글 정보를 조회해 봤는데요. al32utf8로 변경했지만 한글이 깨져서 나옵니다.

 

하지만 처음 상태와는 다르게 한자가 나옵니다.

 

 

 

 

위와 같은 경우에는 한글을 UTF8로 인코딩하지 않고, EUC-KR로 인코딩해 데이터가 들어가기 때문입니다.

 

그래서, NLS_LANG을 "KOREAN_KOREA.KO16KSC5610" 로 변경합니다.

 

 

 

 

위와 같이 설정하고 난 후, 테이블의 한글 코멘트를 조회하니 이제 정상적으로 한글이 나오게 됩니다.

 

 

한글이 깨져서 해결이 안되실 때 위와 같은 방법으로 NLS_LANG을 설정하고 해보세요!

728x90
반응형