다국어로 데이타를 유지하기 위해서 특정테이블의 특정칼럼을 데이타 타입을 NVARCHAR2(300) 으로 변경했습니다.

저장함수로 쿼리를 작성해 놓았던 기존소스에서 에러가 발생하더군요.


ORA-12704 문자 집합이 일치하지 않습니다


뭐지...

원인을 분석해 보니 조회된 결과 데이타의 문자 데이타 타입이 일치하지 않는다는 것입니다.

한 칼럼은 VARCHAR2, 다른 칼럼은 NVARCHAR2 로 쿼리결과가 만들어 집니다.

UNISTR(VARCHAR2 칼럼) 하면 에러는 해결되는것 같습니다.

여기서 고민이 하나 생깁니다.

그러면 모든 VARCHAR2 칼럼을 NVARCHAR2 와 엮일때 UNISTR 함수를 사용해야 되는 건가...


여기서 하나 집고 넘어가야 할 부분이 있습니다. 

어플리케이션은 클라이언트와 데이타 베이스 영역으로 나눌수 있습니다.

데이타베이스는 설치시에 CHARACTER SET, NATIONAL CHARACTER SET 을 설정해서 테이블의 데이타 타입의 문자의 가변길이를 지정하는 연결고리가 됩니다.

CHARACTER SET 을 AL32UTF8 로 설정하면 한글, 영어를 제외한 다국어 (일어, 중국어 등)을 입력받아서 관리하기에 쉬울듯 합니다. VARCHAR2 에 저장될때 다국어를 변환해야 할 필요가 없을 거니까요.

만약에 CHARACTER SET 을 KO16MSWIN949 로 설정하면 한글, 영어 로 데이타를 관리하기는 쉬우나 다국어를 관리하기엔 데이타 변환이 필요해 보입니다. 그래서 VARCHAR2 칼럼을 NVARCHAR2 로 변환해서 입력되도록 변경했지요.

하지만 ORA-12704 에러가 발생합니다.

그리고 클라이언트의 CHARACTER SET 의 설정도 신경을 써야할듯 합니다.

서버는 UTF8로 데이타를 보내주었으나 클라이언트가 다른 CHARACTER SET 으로 설정되어 있으면 데이타가 깨어져서 보입니다.


블로그 이미지

희망잡이

,