반응형

Oracle에서 한글이 깨지는 현상은 주로 문자 인코딩 설정과 관련이 있습니다. Orange와 같은 툴에서 Oracle 데이터베이스와 연결할 때 한글이 제대로 표시되지 않는 문제를 해결하기 위한 방법을 알아보겠습니다.

 

1. 데이터베이스 문자 세트 확인:
Oracle 데이터베이스의 문자 세트를 확인합니다. NLS_CHARACTERSET와 NLS_NCHAR_CHARACTERSET을 확인하여 적절한 문자 세트(예: AL32UTF8 또는 UTF8)가 설정되어 있는지 확인합니다.

 

SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE 'NLS_CHARACTERSET' OR PARAMETER LIKE 'NLS_NCHAR_CHARACTERSET';

 

 

NLS_CHARACTERSET 과 NLS_NCHAR_CHARACTERSET 차이

더보기
더보기

1. NLS_CHARACTERSET
NLS_CHARACTERSET은 데이터베이스 내 일반 문자 데이터(예: CHAR, VARCHAR2)의 인코딩 방식을 지정합니다.
용도는 주로 비유니코드 문자 데이터를 다루는 데 사용하며, 주로 ASCII 문자 및 여러 언어의 문자 데이터를 처리하는 데 적합합니다.
2. NLS_NCHAR_CHARACTERSET
NLS_NCHAR_CHARACTERSET은 NCHAR, NVARCHAR2, NCLOB와 같은 유니코드 문자 데이터의 인코딩 방식을 정의합니다. 유니코드 문자 데이터를 저장할 때 사용되며, 일반적으로 UTF-8 또는 UTF-16 같은 인코딩 방식이 선택됩니다.
특히 다양한 언어의 문자를 저장해야 할 경우, 즉 다국어 지원이 필요한 상황에서 유용합니다.


정리
NLS_CHARACTERSET: 비유니코드 문자 데이터의 인코딩을 담당.
NLS_NCHAR_CHARACTERSET: 유니코드 문자 데이터의 인코딩을 담당.

 

2. 클라이언트 문자 세트 설정:
사용 중인 툴(Orange)의 문자 세트를 Oracle 데이터베이스와 일치하도록 설정합니다. 일반적으로 UTF-8로 설정하는 것이 좋습니다. 툴의 설정에서 문자 인코딩을 확인하고 수정합니다.


3. JDBC URL 설정:
JDBC를 통해 Oracle에 연결할 경우, JDBC URL에 useUnicode=true와 characterEncoding=UTF-8을 추가하여 문자 인코딩을 설정합니다.

jdbc:oracle:thin:@//hostname:port/service_name?useUnicode=true&characterEncoding=UTF-8

 

4. Oracle 환경 변수 설정:
NLS_LANG 환경 변수를 설정하여 클라이언트의 언어, 지역 및 문자 집합을 지정합니다. 예를 들어, 한글 환경을 설정하려면 다음과 같이 설정할 수 있습니다.

NLS_LANG=KOREAN_KOREA.KO16KSC5601

UTF-8을 사용할 경우 

NLS_LANG=KOREAN_KOREA.UTF8

 

5. 데이터베이스 및 클라이언트 재시작:
설정을 변경한 후, 데이터베이스와 클라이언트를 재시작하여 변경 사항이 적용되도록 합니다.

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기