2009-04-21 27 views
12

メインフレームへのEBCDICテキストの送信が必要です。我々はいくつかの中国語の文字を持っているので、UTF8形式です。 UTF-8文字をEBCDICに変換する方法はありますか?ターゲット・システムは、IBMのメインフレームやミッドレンジであると仮定すると、JavaのUTF-8からEBCDICへ

おかげで、 ラジャモハン

+0

UTF-8からEBCDICへの変換は無損失ですか?つまり、毎回同じEBCDICバイトを前後に変換できますか? –

答えて

8

は、それがIBM CCSIDの(CPに対応し、CPxxxxという名前のエンコーディングとしてJVMだに組み込まれたEBCDICエンコーディングのすべてを完全にサポートしていますコードページを表します)。クライアント側は必要なエンコーディングをサポートしないため、ホスト側で翻訳を行う必要があります。

UnicodeはDBCS以上であり、既知の文字をすべてサポートしているため、複数のEBCDICエンコーディングを対象とする可能性があります。これらのエンコーディングを何らかの方法で設定することになります。データのホストへの到着やホストシステムからの離脱に伴い、翻訳が完了した状態でクライアントのUnicode(UTF-8、UTF-16など)のみを使用してください。

ホスト側で翻訳する必要がある以外は、どのようなJavaの変換とも同じです。例えば新しいString(バイト、エンコーディング)、String.getBytes(エンコーディング)、およびさまざまなNIOクラスとライタークラス実際には魔法はありません。ISO 8859-xとUnicode、または他のSBCS(または限定されたDBCS)の間で翻訳することと変わりありません。

例えば

:あなたはIBM's documentation websiteに関する詳細な情報を見つけることができます

byte[] ebcdta="Hello World".getBytes("CP037"); // get bytes for EBCDIC codepage 37 

4

EBCDICには多くの8ビットコードページがあります。それらの多くはVMによってサポートされています。 Charset.availableCharsets().keySet()を見ると、EBCDICページの名前はのようにIBM500cp500のような別名があります。

二つの問題があります:あなたは文字がEBCDICの異なるコードページに含まれている場合

  1. が、これは、これらの文字セットは、窓の外の任意のVMで利用可能な場合、私は、わからない
  2. を助けにはなりません。

最初は、this approachをご覧ください。 2番目は、目的のランタイムを試してみてください;-)

+0

'IBM * 'という名前の文字セットのすべてがEBCDICであるとは限りません。たとえば、[IBM850](http://en.wikipedia.org/wiki/Code_page_850)は、コマンドプロンプトで米国および西ヨーロッパのWindowsバージョンで使用される標準コードページです。 – lavinio

0

中規模のAS/400(最近のIBM i)のベストプラクティスは、これらのすべてを実行するIBM Java Toolkit(jt400.jar)を使用することです物事は透過的に(多少示唆されている)。

Javaの内部では、文字は16ビット値であり、UTF-8(つまりエンコード)ではありません。

2

いつでも、IBM Toolbox for Java(JTOpen)、特にcom.ibm.as400.access.AS400Textクラスをjt400.jarに使用できます。

次のようにそれが行く:私は、コード・ページとエンコーディングCP420のそれに対応するJava表現を使用

int codePageNumber = 420; 
String codePage = "CP420"; 
String sourceUtfText = "أحمد يوسف صالح"; 

AS400Text converter = new AS400Text(sourceUtfText.length(), codePageNumber); 
byte[] bytesData = converter.toBytes(sourceUtfText); 
String resultedEbcdicText = new String(bytesData, codePage); 

は、このコード・ページは、アラビア語テキストに使用されているので、あなた中国語のテキストに適したコードページを選択する必要があります。

関連する問題