絵文字変換ライブラリ
JAVAでの携帯サイト作成時や、携帯メール配信時に使用している、絵文字変換ライブラリですが問題なさそうなので、置いておきます。
今のところ、以下のことができます。
機能概要
・絵文字バイナリコードの削除
・絵文字バイナリコード→独自コードへの変換
・独自コード→絵文字バイナリコードへの変換
・独自コードは"[:0000:]"のようなフォーマット
サポート状況
・shift-jis、utf-8をサポート(euc-jpは動作未確認)
・docomo絵文字、AU絵文字、softbank絵文字対応
・AUのEメール送出用JISコードに対応したShift-JISコード未対応
・スマートフォン(IPHONE,ANDROID)はsoftbank絵文字と同一
クラス概要
Emoji.class
絵文字変換クラス。
EmojiUtility
絵文字変換ユーティリティ。Emoji.classのインスタンスを文字コードごとにキャッシュする。
このクラスのみで、操作は可能です。
CodeToEmojiOutputStream
Emoji.classをOutputStreamで使用するためのクラス。独自コード→絵文字の変換を行う。
EmojiToCodeOutputStream
Emoji.classをOutputStreamで使用するためのクラス。絵文字→独自コードの変換を行う。
使い方
・全絵文字表示
Emoji emoji = new Emoji(Charset.forName("utf8")); FileOutputStream fo = new FileOutputStream(new File("emoji_all.txt")); emoji.writeTo(fo, Emoji.Mode.DOCOMO); emoji.writeTo(fo, Emoji.Mode.AU); emoji.writeTo(fo, Emoji.Mode.SOFTBANK); fo.close();
・絵文字バイナリコードの削除(shift-jisの場合)
BufferedInputStream in = new BufferedInputStream(new FileInputStream("input_text.txt")); OutputStream out = EmojiUtility.encode(new FileOutputStream("output_text.txt"), "shift-jis", Emoji.Mode.DELETE); byte[] buf = new byte[2048]; int len = 0; while ((len = in.read(buf)) != -1) { out.write(buf, 0, len); } in.close(); out.close();
・DOCOMO絵文字バイナリコード→独自コードへの変換(utf-8の場合)
BufferedInputStream in = new BufferedInputStream(new FileInputStream("input_text.txt")); OutputStream out = EmojiUtility.encode(new FileOutputStream("output_text.txt"), "utf-8", Emoji.Mode.DOCOMO); byte[] buf = new byte[2048]; int len = 0; while ((len = in.read(buf)) != -1) { out.write(buf, 0, len); } in.close(); out.close();
・独自コード→DOCOMO絵文字バイナリコードへの変換(shift-jisの場合)
BufferedInputStream in = new BufferedInputStream(new FileInputStream("input_text.txt")); OutputStream out = EmojiUtility.decode(new FileOutputStream("output_text.txt"), "shift-jis", Emoji.Mode.DOCOMO); byte[] buf = new byte[2048]; int len = 0; while ((len = in.read(buf)) != -1) { out.write(buf, 0, len); } in.close(); out.close();
OutputStream to = EmojiUtility.decode(System.out, "shift-jis", Emoji.Mode.DOCOMO); // DOCOMO絵文字へ OutputStream from = EmojiUtility.encode(to, "shift-jis", Emoji.Mode.SOFTBANK); // SOFTBANK絵文字から from.write(buf, 0, len);
こんな感じで使えると思います。
バグや要望などありましたら連絡ください。