0

JTOpen の UserSpace オブジェクトを使用して IBMi システムから読み取る場合、データは EBCDIC から ASCII に変換されますか、または UserSpace.read() メソッドを使用して EBCDIC のままになります。

その場合、変換しないように指示する方法、またはそのデータを読み取る別の方法があります。または、データのバイト表現を取得する方法はありますか。以下は、私が目の前でユーザー空間を見たときに見えるものであり、完璧な世界では、それを長い文字列またはバイト配列として取得するのが理想的です.

24787779 5158B126 69675175 72536799
9BC7D489 85795158 B1276A96 A38580A3
A7676B37 25797288 A3A845D7 9996A674
74735496 99C7D389 8788A459 B2276866
96A38C83 A3969036 26797679 53A840D7
97D9D6E3 C5C3E3D6 D98794C9 C7C8E3E8

私が読み込もうとしているユーザー空間は、それが問題になる場合、CCSID 65535 を使用します。

ありがとうございました。

4

2 に答える 2

1

*USRSPC オブジェクトは、実際には単なる名前付きのメモリです。内部のデータには、必要なデータを含めることができます。EBCDIC、ASCII コード ページ、UTF-8、UTF-16 などでエンコードされたテキストを含めることができます。これには、4 バイト整数の配列、行列、ポインターのリンク リスト、またはその他の非テキスト データを含めることができます。テキスト データと非テキスト データが混在している可能性があります。それは、アプリケーションが何を書き込むか次第です。

JT400 UserSpaceAPI は、*USRSPC オブジェクトに含まれるデータが何であるかを認識しないため、生のバイトを読み取るだけです。これらのバイトをバイト配列に読み込み、CharConverter.byteArrayToStringメソッドを使用してそれを Java String オブジェクトに変換する必要があります。もちろん、65535 ではなく、有効なテキスト CCSID を渡す必要があります。

于 2016-11-17T02:26:36.677 に答える
0

CCSID 65535 は、データをバイナリと見なすよう OS に指示します。

したがって、EBCDIC から ASCII には変換されません。

変換を処理する正しい方法は、データに正しい CCSID を正しくタグ付けすることです。

それ以外の場合は、AS400Text クラスで利用可能なテキスト変換を見てください。

最後に、JDBC には、CCSID 65535 の変換を強制するように設定できる接続プロパティがあります。標準接続に類似したものがあるかどうかはわかりません (AS400Text がそうかもしれません)。

于 2016-11-14T16:41:53.353 に答える