2016-10-24 8 views
0

Winformアプリケーションで管理対象外のOracleから管理対象のOracleに切り替えましたが、1つの詳細を除いてすべて正常に動作しています。文字列"≤"をデータベースに保存してから再度取得しようとすると、"="が返されます。これはnvarcharとして格納されており、実際には"≤"という名前で保存されていることがわかります(Toad経由で)。管理対象外のデータアクセスを実行しているときは、"NLS_LANG = SWEDISH_SWEDEN.WE8MSWIN1252"を使用しましたが、これは管理対象ドライバではサポートされていないことがわかります。管理対象ドライバは.NETロケールを使用し、コードページは1252に設定されています。誰もがこれを見て、おそらく解決策を見つけましたか?管理されたOracleアクセス、 "≤"のサポート

答えて

0

あなたが正しいです、ODP.NET管理対象ドライバはNLS_LANGではありません。 .NETロケールのみに依存します。

ただし、TOADはODP.NET管理対象ドライバを使用しないため、NLS_LANGを適切に設定する必要があります。 .WE8MSWIN1252に設定する場合は、オプション - >ファイル - >一般 - >デフォルトのエンコーディングをANSIに設定する必要があります。 [保存]ダイアログでANSIを設定します。

+1

はい、わかります。 Toadは正しい文字列 "≤"を表示しますが、管理対象アプリケーションは表示しません。 – Martin

+0

実際には、Windows CP1252では「≤」という文字はサポートされていません。[Windows-1252](https://en.wikipedia.org/wiki/Windows-1252#Code_page_layout)を参照してください。 .NETロケールをUnicode(つまりUTF-8)に設定しようとしている可能性があります –

+0

このディスカッション[Oracle Community](https://community.oracle.com/thread/2610675?start=15&tstart=0)を確認してください。基本的に彼らは言う:それは可能ではない、管理されていないドライバを使用します。私はあなたの 'NLS_NCHAR_CHARACTERSET'が' AL16UTF16'(あなたが 'NVARCHAR2'を使っているように)のデータ型を"一般的ではない "と考えていると仮定します。 –

関連する問題