2017-02-03 5 views
0

私は1つの.sqlファイルを作成し、出力は、いくつかのジャンク言葉Oracleのドイツ語の文字は、ジャンク文字に変換されますか?

に置き換えなった後、 @filepath..\germantest.sqlを使用してsqlplusからSQLスクリプトを実行している唯一のフィールドTCHAR

SQL> desc test; 
Name          Null? Type 
----------------------------------------- -------- -------------- 

TCHAR            CHAR(20) 

を持つ単純なテーブルを作成しました出力:

しかし、同じデータをファイルの代わりにsqlplusで直接挿入しようとすると、

入力

insert into test values('Ärger Ökonom'); 
insert into test values('Ä'); 
insert into test values('Wir bestß'); 
insert into test values('Nauch à â Ý'); 

出力

SQL> select * from test; 

TCHAR 
-------------------- 
Ärger Ökonom 
Ä 
Wir bestß 
Nauch à â Y 

は、出力は正しいです、ここで示しています。

私は今まで何を試みましたか?

  1. 私は、ファイル形式をチェックし、それは私がNLS_CHARSETをチェックし、それがAL32UTF8であるUTF-8
  2. でなければなりません。

私は何を期待しましたか?

  1. sqldeveloperから同じファイルを実行すると、正しい出力が得られます。

同じスクリプトを.sqlファイルから実行し、元のファイルと同じようにデータベースにドイツ語の文字を残したいとします。

+0

これらの文字がSQL Developerで正しく表示されていれば、データベースに正しく格納されています。SQL \ * Plusが正しく表示しないという事実は、あなたのコンソールフォントがこれらの文字(またはUTF-8)をサポートしていないことを意味します。別のオプションは、SQL * PlusのNLS環境が正しく構成されていないことです。どのオペレーティングシステムを使用していますか? –

+1

私たちはwindows7を使用しています。 sqldeveloperからファイルを実行するときにデータが正しく格納されません。正しい出力が得られますが、sqlplusから同じファイルを実行すると、奇妙な出力が得られます。 –

+0

WindowsでSQL * PlusのNLS設定を確認してください。おそらくUTF-8を使用していない可能性があります。環境変数 'NLS_LANG'を正しく設定する必要があります –

答えて

2

Windowsコンソールのコードページは、とSQL * PlusのNLS_LANG設定と一致する必要があります。一言で言えば

は、次のものが必要です。

c:\> chcp 65001 
c:\> SET NLS_LANG=GERMAN_GERMANY.AL32UTF8 

あなたが簡単にあなたがコンソールにtype germantest.sqlを実行する場合、あなたのコードページが正しいかどうかを確認することができます。それは、ファイルの内容が表示されない場合、正しく間違ったコードページがあります。

enter image description here

を今すぐコードページは、NLS_LANGの設定と一致するようにがあります

enter image description here

の正しい値をNLS_LANGは、SQL * Plusによってファイルが読み取られるエンコーディングを判別するため、SQLスクリプトの実行時にも重要です。

もちろん、実際にそれらの文字を表示できるフォントを使用するようにcmd.exeを設定する必要があります。

+0

これはchcp 65001を設定して、SQLクエリデータベースを実行しようとすると機能しません。 .sqlファイルを実行しようとすると、例外がスローされます。SP2-0734:未知のコマンドで始まり "..."を挿入します。 - 残りの行は無視されます。 SQL> select * from test; –

+0

@MaheshwarLigade:あなたのSQLスクリプトが[UTF8 BOM](https://en.wikipedia.org/wiki/Byte_order_mark)を使用して格納されているかのように聞こえます。SQL \ * Plusがサポートしているとは思わない –

+0

chcpは動作していませんでしたunix solaris –

関連する問題