1

SQuirrel SQL は初めてです。CCSID 65535 を ASCII、UNICODE (または人間が読めるもの) に変換するための助けが必要です

次のガイドに従って JDBC ドライバーを使用しています。


IBMのウェブサイトによると:

プログラムで対処しなければならない文字変換の問題は何ですか? IBM i データベースは、EBCDIC を使用してテキストを保管します。Java は Unicode を使用します。JDBC ドライバーは文字セット間のすべての変換を処理するため、プログラムはそれについて心配する必要はありません。

しかし、それらは 65535(Hex) ではなく CCSID 37 を参照していると思います。


DB2 DB から次の情報を取得しました

DSPFD を実行すると、次のようになります。

コード化文字セット識別子。. . . . . : CCSID 65535

DSPFFD を実行すると、次のようになります。

TXT     CHAR            3       3        41        Both     Text      
Field text  . . . . . . . . . . . . . . . :  Text   Coded Character
Set Identifier  . . . . . :  65535

しかし、TXT フィールドに対する SQuirrel クエリの結果は次のようになります。

5c c1 c4 c4 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 c1 40 7e 40 c2 40 4e 40 c3 40 40 40 40 400 40 40 40 40 40

これは次のように翻訳する必要があります。

*ADD                      A = B + C
4

3 に答える 3

13

JDBC FAQ から:

Toolbox JDBC が Java プログラムに EBCDIC 文字を返すのはなぜですか?

通常、Toolbox JDBC ドライバーは EBCDIC 文字を Unicode 文字列に自動的に変換します。代わりに未翻訳の EBCDIC 文字が返されているように見える場合は、IBM i データベース内のフィールドが CCSID 65535 でタグ付けされている可能性があります。Toolbox JDBC ドライバーは、この CCSID を翻訳すべきでないフィールドとして認識します。この動作を回避するには、翻訳する IBM i のフィールドに有効な CCSID をタグ付けします。または、「translate binary」接続プロパティーを「true」に設定することもできます。これにより、JDBC ドライバーは、CCSID 65535 でタグ付けされたものを含むすべてのフィールドを変換するようになります。これを行う最も簡単な方法は、

";translate binary=true"

データベースへの接続時に使用する URL の末尾に .

于 2011-11-24T17:46:28.740 に答える
3

私の場合は十分ではなく、ファイルにはポーランド語の文字が含まれており、ccsid は 65535 でした。行を「;translate binary=true;ccsid=870;」に変更した後。出来た。

まだ 1 つの警告があります。結合内で使用すると、ccsid が失われます。

于 2014-04-15T05:30:39.823 に答える