2011-02-10 8 views
3

JDBCとODBCの両方を使用して接続するOracle 11データベースがあります。 JDBCはうまく動作しますが、ODBCではSELECTのすべてのポーランド語の結果がラテン語に相当します。たとえば、ą - >aÓ->Oなど私は自分のアプリケーションとodbcモジュールを使用する単純なPythonプログラムでテストしました。Oracle ODBC:SELECT結果で国別文字がラテン語に相当する理由

    : -

    ZAMOŚĆ - by JDBC 
    ZAMOSC - by ODBC 
    

    私の環境:::

    DBサーバ64の生産

    クライアント・マシンのOracle Database 11gリリース11.2.0.1.0データベースから同じ値がと返されます

  • Windowsサーバー2008 R2 64ビット
  • 32ビットおよび64ビット版のOracleクライアントは、c:\Oracle\Ora1120_32bitおよびc:\Oracle\Ora1120_64bit
  • ODBCマネージャとしてOracleドライバのバージョンを報告します:11.02.00.01

私はすべてのロケールがポーランド/ポーランドに設定されていると思いますが、彼らは SETによるコマンドラインユーティリティは表示されません。

ポーランド語の文字をラテン語に変換するのに、ODBCまたは環境設定がどのような役割を果たすのか、誰も知っていますか?

+0

NLS_LANGの値は何ですか? –

答えて

4

どちらの場合でもクライアント文字セットの値が同じではないと思われます。あなたのNLS_LANG設定の値を確認することができます:あなたがWindows上なので、それがレジストリに設定する必要があります

  • (おそらく、HKEY_LOCAL_MACHINE - > SOFTWARE - > ORACLE - > YOUR_HOME - > NLS_LANG)
  • あなた」これはあなたの問題を解決しないが、環境変数NLS_LANGを追加すると動作することがわかった!
+1

はい、 'NLS_LANG'はレジストリ内の' AMERICAN_AMERICA.WE8MSWIN1252'に設定されています(2つの場所に1つあります:1つはレジストリに設定されているので、おそらくHKEY_LOCAL_MACHINE - > SOFTWARE - > ORACLE - > YOUR_HOME - > NLS_LANG) 32ビット用、1ビット用)。私はレジストリ設定を 'POLISH_POLAND.EE8MSWIN1250'に置き換え、マシンを再起動しましたが、それは助けになりませんでした。次に、マシン環境に 'NLS_LANG = POLISH_POLAND.EE8MSWIN1250'を追加しました。このマシンは、Oracleクライアントのインストール時にアメリカのロケールで構成されていました。 –

関連する問題