1

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

私の質問は:

このような間違ってエンコードされたデータを取得する方法はありますか? を見たいのですが '?' 誤ってエンコードされた文字の代わりに文字。エンドユーザーが間違ってエンコードされたデータを表示して修正することを許可しないため、例外は必要ありません。

4

2 に答える 2

1

IFX_USE_STRENC=trueIBM Polska の助けを借りて、JDBC 接続文字列を次の方法で拡張できることがわかりました

これにより、JDBC が誤ってエンコードされたデータを取得できました。今私は読むことができます:

nazw:Przemysław
nazw:Ĺ?UKASIK

(2 番目のレコードはŁ間違ったエンコーディングのポーランド文字です)

ありがとうIBMポルスカ!

于 2013-02-01T09:27:48.357 に答える
0
于 2013-02-01T07:06:47.413 に答える