3

興味深い問題が発生しました (レガシー システムとのやり取りではよくあることです)。私は、さまざまなシステムから要求を受け取ることができるアプリケーション (現在 x86 Linux または Windows システムで実行されている) に取り組んでおり、そのうちの 1 つが MVS システムです。

MVS システムからの要求データを解釈するためにどのコードページ/文字セットを使用する必要があるかを判断しようとしています。

以前、私は 'cp500' (IBM-500) を使用して z/OS システムに来るバイト日付を解釈しましたが、MVS は少し古いシステムであり、IBM が考えを変えたように見えたので心配です。使用するエンコーディングに関して一貫して (何十もの EBCDIC エンコーディングが存在する必要があります)、その cp500 は正しいエンコーディングではない可能性があります。

Java の文字セットについて私が見つけた最良のリソースはhttp://mindprod.com/jgloss/encodingです。しかし、このサイトと IBM Infocenters からは、明確な回答を得ることができませんでした。

編集:以下のPaxへの私の応答から追加:

私の質問には、リクエスト データの出所に明らかな穴がありました。この場合、データの発信元は Websphere MQ インターフェース経由です。Websphere MQ には適切なエンコーディングに変換するための機能がありますが、これは MQMessage.readString() を使用してデータを読み取るためのものであり、その後非推奨になりました。私はこれを使用したいと思いますが、キューから直接バイトを読み取る MQQueue からメッセージを読み取る方法を変更できない独自のインターフェイス フレームワークを使用しているため、ハンドル変換が残っています。

最終回答: これについてフォローアップしたいと思いました。正しい文字セットは確かに cp500 (IBM-500) であることがわかりました。ただし、結果は異なる可能性があるという印象を受けています。同じ問題を抱えている他の人のためのヒント:

Charset.availableCharsets(); を利用します。これにより、ランタイムでサポートされている文字セットのマップが表示されます。これらのセットを反復処理し、その文字セットに変換されたバイト データを出力しました。私が望んでいた答えは得られませんでしたが (主に、入ってくるデータを読み取ることができなかったため)、他の人にとっては役立つと思います。

サポートされている文字セットのリストについては、 http : //mindprod.com/jgloss/encodingを参照してください。

最後に、私はこれを確認していませんが、正しい JRE を使用していることを確認してください。IBM ランタイムは、OpenJDK や Sun のランタイムよりも多くの EBCDIC 文字セットをサポートしていると思います。

4

1 に答える 1