2011-08-24 7 views
5

Linux 컴퓨터에서 유니 코드 데이터를 스풀링하도록 Oracle sqlplus (10.2)를 가져 오려고합니다. 이 문제에 대한 여러 논의가 있지만 로캘 설정을 확인하고 NLS_LANG를 AL32UTF8로 설정하는 것 외에는 명확한 대답이 없습니다. 모든 로케일 정보가 "en_US.UTF-8"로 설정되어 있으면 요청시 전체 출력을 게시합니다.유니 코드 문자를 스풀링하도록 SQLPlus를 가져 오는 중입니까?

OS (vi 등)는 유니 코드 문자를 인식하고 받아들입니다. 그러나 sqlplus를 사용할 때 모든 비 ASCII 문자가?로 변경됩니다. 문자. Oracle DB에는 NLS_CHARACTERSET이 AL32UTF8로 설정되고 NLS_NCHAR_CHARACTERSET은 AL16UTF16으로 설정됩니다.

sqlplus 자체에 대해 설정해야하는 설정이나 스위치가 누락 되었습니까? 어떤 아이디어라도 높이 평가할 수 있습니다.

답변

11

이 답변을 찾았습니다. 분명히 NLS_LANG (올바른 설정은 AMERICAS_AMERICA.AL32UTF8)을 쉘 스크립트에서 설정하는 것은 작동하지 않습니다. 내 보내야합니다 :

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 
+0

다음과 같음 : 내보내기 NLS_LANG = AMERICAN_AMERICA.AL32UTF8 –

+0

고마워요! 그에 따라 고정. –

+1

며칠 동안이 문제로 고생했습니다. 그것은 명령 프롬프트와 cygwin 쉘 스크립트 모두에서 Windows에서 훌륭하게 작동했지만 ... Linux 자체에서는 그렇지 않았습니다. 내보내기를 한 후에 모두 작동했습니다 :). Excel NLS_LANG = .AL32UTF8 –

0

또 다른 방법은 스풀 스크립트 내부의 NLS_LANG 일을하는 것입니다,은 ALTER 세션 문으로 :

alter session set NLS_LANG='AMERICAS_AMERICA.AL32UTF8' 

export NLS_LANG없이이 값을 설정 sqlplus 대한 액세스이 허용하지 않습니다 변수는 내보내기 후에 만 ​​환경에 전달되고 다른 사용자가 사용할 수 있습니다.

+0

이것은 작동하지 않습니다. sqlplus를 시작하기 전에 NLS_LANG를 설정해야합니다. – jramb

+0

감사합니다. 지금까지는 로컬 구성 및 관련 스크립트를 점검 할 것입니다. –

관련 문제