【PHPで作る】初めての携帯サイト構築

第4回 絵文字を取り扱う

この記事を読むのに必要な時間:およそ 2.5 分

絵文字を扱う上で考えること

携帯サイトを作る上で必ず通るのが「絵文字」です。絵文字は1文字(2バイト幅)で表現され,キャリアによって仕様が異なります。絵文字の個数や種類なども統一されていないため,キャリアごとに独自の絵文字が採用されています。またキャリアによって対応している絵文字数が違うだけでなく,端末によっても対応している絵文字が異なったりといったことがあります。

docomo

対応機種/タイプ 絵文字対応状況
iモード対応HTML3.0以前 基本絵文字176種類が利用可能
iモード対応HTML4.0以降 基本絵文字176種類+拡張絵文字76種類が利用可能

au

対応機種/タイプ 絵文字対応状況
C3001H/C3002K/C3003P/C5001T/A3011SA/A3012CA/A3013T/A3014S 絵文字番号1~344,500~518が利用可能
A3015SA 絵文字番号1~344が利用可能(※アニメーション絵文字対応)
A1101S 絵文字番号1~822が利用可能
A1300シリーズ,A1400シリーズ,A5000シリーズ,Sweets pure,G'zOne TYPE-R,Sweets,talby,INFOBAR,PENCK,neon,Wシリーズ(W06K,W05K,W04K,W03H,W02H,W01Kを除く) 絵文字番号1~822が利用可能(※アニメーション絵文字対応)

SoftBank

対応機種/タイプ 絵文字対応状況
C型 Unicode(E001~E257)の絵文字に対応(※一部端末ではP型以降と同じ絵文字数対応)
P型,W型,3GC型 Unicode(E001~E537)の絵文字に対応

基本的にどの端末にも画面表示できるよう対応するためには,必要最低限の絵文字のみを出力するように工夫します。絵文字を出力しているつもりでも古い端末では表示されていなかったということもありますので,注意が必要です。

絵文字を考えるポイントは大きく2つあります。「画面への出力」「画面からの入力」です。「画面への出力」はキャリアごとに決められた方法で出力します。「画面からの入力」は入力フォームから入力された絵文字を取り込む方法です。「うちの携帯サイトは絵文字を扱わないことに決めたから気にしなくて良いや」と思っていても,入力フォームがあるサイトではユーザーは文字に絵文字を入力してくる可能性があります。絵文字の知識をきっちり持っていないと取り除くこともできず,入力されてそのまま文字が化けてしまうといったことがあります。そのため絵文字を利用しないサイトでも絵文字に関する知識は最低限知っておく必要があります。

絵文字を出力する

まずは絵文字を出力する方法を見ていきましょう。絵文字の出力方法は各キャリアで異なり,絵文字を表現する方法も1つに限定されているわけではありません。各キャリアの絵文字の表現方法は次の通りです。

絵文字の表現方法

キャリア 絵文字の表現方法
docomo
  • Shift_JISコードを使ってバイナリで入力する
  • Shift_JISコードを文字参照でテキスト入力する
  • Unicodeを使ってテキスト入力する。
au
  • Shift_JISを使ってバイナリコードで入力する
  • 絵文字番号を使ってHDMLタグ記述で入力する
  • 絵文字番号を使ってXHTML(HTML)タグ記述で入力する
SoftBank
  • Webコードを利用して入力する
  • Unicodeを使ってテキストで入力をする

基本的にどの方法を使って表現しても構いませんが,注意することがあります。それは表現する方法によって若干の意味の違いがあるということです。auの場合「絵文字番号を使ったタグ記述」「バイナリ記述」の絵文字の出力方法がありますが,前者で絵文字を出力した場合,絵文字が「画像」で出力されます。一方後者の場合,絵文字が「文字」として出力されます。つまりフォントの大きさを調整した場合,前者は大きさが変わらず,後者は大きさが変わるといったことになります。画面のデザインやレイアウトを気にする場合はよく理解して利用する必要があります。特に問題がなければ,絵文字はバイナリを利用するのがよいでしょう。PHPでバイナリ絵文字を表示するには次のように実装します。

auの「太陽」のマークを出力する

pack('H4',dechex(63072));

各キャリアの絵文字のコードは次のサイトに掲載されています。

docomo

作ろうiモードコンテンツ:絵文字記述方法 | サービス・機能 | NTTドコモ

au

KDDI au: 技術情報 > 絵文字

SoftBank

WEB & NETWORK 絵文字一覧 使用方法

著者プロフィール

荒木稔(あらきみのる)

京都出身。ホテルマンを経て,基幹システムの開発などに従事した後ウェブクリエイターとして独立。利用者にもっと近いサービスを提供したい想いから,携帯を中心とした企画/開発/執筆/講演活動を行う。近著に「PHP×携帯サイト デベロッパーズバイブル」(ソフトバンククリエイティブ)。家族のための携帯サイト「ファミリーモバイル」(http://www.fmob.jp)を立ち上げ現在に至る。

memokamihttp://memokami.com

コメント

  • J-PHONE絵文字の構造

    Softbank絵文字というか、J-PHONE絵文字ですが、よくわからないなら中途半端に触れずに無視した方がいいんじゃないですかね。Softbank XHTML は UTF-8 で書けばいいですし。

    一応代わりに解説しますと、J-PHONE絵文字は ISO/IEC 2022 の枠組みを「参考にして」作られています。その詳細はSoftbankの配布している「ウェブコンテンツ開発ガイド [HTML編]」の2.4.2.3に書かれています。が、この内容はISO/IEC 2022を「ISO-2022」と表記しているところから始まって誤解と誤りに満ちており、自然言語で書かれた解説は何の役にも立ちません。

    結論としては ESC $ [GEFOPQ] で絵文字世界に入り、1 バイトの絵文字任意に書き連ね、絵文字世界から抜けるには ¥x0F。[GEFOPQ] の部分が同じ絵文字を複数続ける場合はそのまま次の絵文字を書ける、ということです。(なので、この場合は 7byte でなく 6byte)。

    UTF-8 周りは UTF-8 コードなんて謎の表現を使わずに、Unicode のコードポイントを使えば他社の絵文字の Unicode での表現もまとめて説明できるように思いますが、まぁさすがにそれだと紙面が足りないかな

    Commented : #1  成瀬 (2009/02/16, 14:16)

コメントの記入