Informix データベースが次のように構成されています。
DB_LOCALE=pl_pl.CP1250
(Windows CP1250 文字エンコーディングのポーランド語ロケール)。
このデータベースには、VARCHAR
ほとんどのデータが CP1250 でエンコードされている列を持つテーブルがありますが、一部のレコードは UTF-8 でエンコードされています。それらは ODBC によって挿入され、誤ってエンコードされた .csv インポートであると思われます。
ODBC を使用すると、この誤ってエンコードされたデータがフェッチされる可能性があります。きれいに見えません:
nazw:┼?UKASIK
しかし、表示することはでき、エンド ユーザーはそのようなデータを編集できます。これらの「奇妙な」文字は、「Ł」文字の UTF-8 文字です。
ネイティブ JDBC ドライバーを使用すると、そのようなデータを取得できません。String
例外が発生する代わりに:
JDBC Error: -79783
IX000
Kodowanie lub zestaw kodów znaków nie są obsługiwane.
英語での説明:
-79783 Encoding or code set not supported
Explanation: The encoding or code set entered in the DB_LOCALE or CLIENT_LOCALE variable is not valid.
ネイティブ JDBC ドライバーと JDBC-ODBC ブリッジを使用してデータベースに接続する Jython でテスト プログラムを作成しました。ネイティブドライバーでのみ例外が発生しました。また、他の JDBC getXXX() メソッドを使用してこのデータを取得しようとしましたbyte[]
がStream
、例外も発生しました。JDBC URL を次のように使用します。
jdbc:informix-sqli://test-informix:9088/test:informixserver=ol_testifx;DB_LOCALE=pl_PL.CP1250;CLIENT_LOCALE=pl_PL.CP1250;charSet=CP1250
サーバーのバージョン:IBM Informix Dynamic Server Version 11.50.FC4
ネイティブ ドライバー:3.70.JC5DE; major: 3; minor: 70
JDBC-ODBC ブリッジで使用される ODBC ドライバー:2.0001 (3.70.TC5DE); major: 2; minor: 1
私の質問は:
このような間違ってエンコードされたデータを取得する方法はありますか? を見たいのですが '?' 誤ってエンコードされた文字の代わりに文字。エンドユーザーが間違ってエンコードされたデータを表示して修正することを許可しないため、例外は必要ありません。