表題のものを作ったので書き残しておきます。
まず、全部を解説するとすごく大変なので、ポイントを順をおって解説していきます。
- 準備
- 入力
- 出力
ってな感じでいきます。
準備
まずは前準備です。
- ドコモとauはShift_JIS、SoftBankはUTF-8にする
こうしておかないと、絵文字がうまく受け取れなかったりします。
auをUTF-8でやる方法もあるみたいですが、ここでは割愛。
入力
次はフォームから入力された文字をDBに格納します。
- 絵文字を各キャリアの形式のまま保存します
- どのキャリアでの入力かも保存しておきます(UserAgentとか)
例:
ドコモ:裂
au:<img localsrc="355" alt="" />
SoftBank:$GE
変換にはMobilePictogramConverterが役立ちました。(なぜかリンク切れしています。そのうち復活するかも)
各キャリアの形式のまま絵文字を保存するのは壊さないようにするためです。
出力
DBに格納されたデータを出力します。
- そのまま出力すると絵文字が自分のキャリアのものしか表示されません。レコード毎に入力されたキャリアから現在のキャリアに絵文字を変換してあげます。
- DoCoMoの場合、DBに格納された絵文字はSJIS形式(拡張絵文字を除く)です。出力はunicodeにしてあげたいので、SJIS形式の絵文字をunicode形式に変換する必要があります。
ここもMobilePictogramConverterが役立ちます!
この形で3キャリアに対応した絵文字入力フォームができます!