2011-08-24 59 views
5

LinuxマシンでUnicodeデータをスプールするためにOracle sqlplus(10.2)を取得しようとしています。この問題についていくつかの議論がありましたが、ロケール設定を確認してNLS_LANGをAL32UTF8に設定する以外は明確な答えはありません。すべてのロケール情報が "en_US.UTF-8"に設定されている場合は、要求に応じて全出力を送信します。SQLPlusでUnicode文字をスプールすると、出力されていますか?

OS(viなど)は、問題なくUnicode文字を認識して受け入れます。ただし、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シェルのscripsの両方でWindows上でうまくいきました...しかし、Linux自体ではありません。輸出をした後、それはすべて働いた:)。エクスポートNLS_LANG = .AL32UTF8 –

0

もう一つの方法は、スプールスクリプト内のNLS_LANGのものを持つことである、ALTER SESSION文として:

alter session set NLS_LANG='AMERICAS_AMERICA.AL32UTF8' 

export NLS_LANGせずにこの値を設定sqlplusアクセスもこれをすることはできません。変数には、エクスポート後にのみ、環境に取得され、他の人に利用可能です。

+0

これは動作しません。 sqlplusを起動する前にNLS_LANGを設定する必要があります。 – jramb

+0

ありがとうございます。これまでのところ私のために働いたローカルの設定と関連するスクリプトをチェックします。 –

関連する問題