- PR -

Java Comparatorを使ったEBCDIC順ソート

1
投稿者投稿内容
まさまる
会議室デビュー日: 2007/02/06
投稿数: 2
投稿日時: 2007-02-06 14:26
Javaでのsort処理について教えて頂きたいことがあります。

Comparatorクラスを使用してデータをEBCDICコード順にソートしたいのですが、
JavaはデフォルトでUnicode順でソートされる為、EBCDIC順ソートの方法がわかりません。

・Unicode(ブランク、数字、英字)→EBCDIC(ブランク、英字、数字)
{"001","00A","00 "}→{"00 ","00A","001"}

どなたかご存知の方がいらっしゃいましたら、ご教示お願い致します。


[ メッセージ編集済み 編集者: まさまる 編集日時 2007-02-06 14:27 ]

[ メッセージ編集済み 編集者: まさまる 編集日時 2007-02-06 14:28 ]
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-02-06 14:49
引用:

まさまるさんの書き込み (2007-02-06 14:26) より:
Comparatorクラスを使用してデータをEBCDICコード順にソートしたいのですが、
JavaはデフォルトでUnicode順でソートされる為、EBCDIC順ソートの方法がわかりません。



EBCDICで比較するComparatorを作成すればよいのではないでしょうか。

幸い、EBCDICエンコードがサポートされているので
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/intl/encoding.doc.html

コード:
public class EbcdicComparator implements Comparator<String> {
    public int compare(String s1, String s2) {
        byte[] b1 = s1.getBytes("IBM1047");
        byte[] b2 = s1.getBytes("IBM1047");
        // b1 とb2 について比較
        (略)
    }
}


みたいな感じでしょうか。
まさまる
会議室デビュー日: 2007/02/06
投稿数: 2
投稿日時: 2007-02-06 19:51
nagiseさま、返答ありがとうございました。
今回は、JAVAの環境がj2sdk1.4.2であること、
EBCDICコード=CP1390を使用していることから、
JAVAでサポートしているエンコーディングセットにはありませんでした。

独自にコード変換ロジックを作り対応しました。

しかし、サポートしているエンコーディングの場合には
簡単にできるのですね。参考にさせていただきます。
1

スキルアップ/キャリアアップ(JOB@IT)