絵文字API
絵文字APIとは?
絵文字APIは、フォームから送信されたテキストに含まれる絵文字を処理するためのAPIです。
docomo・au・SoftBankの絵文字に対応しています。
動作環境
絵文字APIはJavaで実装されており、JDK1.4以上のJava EE環境で動作します。
また、Durian Filter Enterprise版およびDurian Filter Standard版でご利用になれます。Durian Proxyではご利用になれません。
ライブラリ
ライブラリは [Webアプリケーションルート]/WEB-INF/lib/durian4-glyph-api.jar です。
ただし、ライブラリのみの単独使用はできません。
機能一覧
絵文字APIには、以下の機能があります。
- テキスト内に絵文字が含まれているかどうかの判定
- テキスト内の絵文字を置換
- テキスト内の絵文字をデコードし、ASCII英数字記号に変換
- CHTMLやiモードXHTMLの絵文字形式で出力
- HTMLへ絵文字画像タグ形式で出力(Durian 4.6以降)
絵文字の判定
フォームから送信されたテキストに絵文字が含まれているかどうかを判定するには、GluphUtils#containsGlyph(String, String) メソッドを使用します。
絵文字の判定サンプルコード
// エンコーディングを指定する request.setCharacterEncoding("Windows-31J"); // リクエストからユーザーエージェントを取得する String userAgent = request.getHeader("User-Agent"); // リクエストからクエリーパラメータを取得する String text = request.getParameter("text"); // 絵文字が含まれているかどうかを判定する if (GluphUtils.containsGlyph(text, userAgent)) { // 絵文字が含まれていたときの処理 }
絵文字の除去
フォームで入力された絵文字を除去する場合は、GluphUtils#removeGlyph(String, String) メソッドを使用します。
絵文字の除去サンプルコード
// エンコーディングを指定する request.setCharacterEncoding("Windows-31J"); // リクエストからユーザーエージェントを取得する String userAgent = request.getHeader("User-Agent"); // リクエストからクエリーパラメータを取得する String text = request.getParameter("text"); // 絵文字を除去する text = GluphUtils.removeGlyph(text, userAgent);
絵文字のデコード
フォームで入力されたテキストに含まれる絵文字をASCII英数記号に変換(デコード)できます。絵文字のデコードには、GlyphUtils#decodeGlyph(String, String) メソッドを使用します。
絵文字をASCII英数記号に変換すると、絵文字付きのテキストデータを安全にDBやファイルに保存したり、後述の絵文字のコンテンツ出力を行うことができます。
絵文字のデコードサンプルコード
// エンコーディングを指定する request.setCharacterEncoding("Windows-31J"); // リクエストからユーザーエージェントを取得する String userAgent = request.getHeader("User-Agent"); // リクエストからクエリーパラメータを取得する String text = request.getParameter("text"); // 絵文字をデコードする String decodedText = GluphUtils.decodeGlyph(param, text);
絵文字のコンテンツへの出力
フォームから送信された絵文字をコンテンツに表示する場合、デコードしたテキストを GlyphUtils#encodeGlyphForIxhtml(String) メソッドなどでエンコードします。フォーム入力の確認画面などで利用できます。
絵文字の出力サンプルコード(iモードXHTML)
// エンコーディングを指定する request.setCharacterEncoding("Windows-31J"); // リクエストからユーザーエージェントを取得する String userAgent = request.getHeader("User-Agent"); // リクエストからクエリーパラメータを取得する String text = request.getParameter("text"); // 絵文字をデコードする String decodedText = GluphUtils.decodeGlyph(param, text); // 絵文字をiモードXHTML向けの表現(&#x****;形式)に変換する String encodedText = GlyphUtils.encodeGlyphForIxhtml(decodedText); // テキストを出力する out.print(encodedText);
絵文字の出力サンプルコード(HTML)
// 絵文字をHTML向けの表現(<img>タグ形式)に変換する String encodedText = GlyphUtils.encodeGlyphForHtml(decodedText, request.getContextPath()); // テキストを出力する out.print(encodedText);
ColdFusionでの利用
ColdFusionでもcfobjectタグによって絵文字APIを利用できます。
絵文字の出力サンプルコード(iモードXHTML)
<cfset headers = GetHttpRequestData().headers> <cfset useragent = headers["User-Agent"]> <cfobject action="create" type="java" class="jp.co.symmetric.durian.extra.GlyphUtils" name="glyphUtils"> <cfset decodedText = glyphUtils.decodeGlyph(Form.text, useragent)> <cfset encodedDecodedText = glyphUtils.encodeGlyphForIxhtml(decodedText)> <cfoutput>#encodedDecodedText#</cfoutput>