モバイルCGI研究(J-SKY編)
|
2001年11月03日更新 |
J-SKY 絵文字は 「絵文字開始コード」と「絵文字終了コード」に「絵文字コード」を挟んだ形式になっています。
絵文字開始コード | 絵文字コード(例) | 絵文字終了コード |
$ | E! | |
1B 24 | 45 21 | 0F |
J-PHONE のサイトで絵文字を調べると "$E!" といった表記が見られますが、初めの "$" が「絵文字開始コード」、最後の "" が「絵文字終了コード」です。間に挟まれた "E!" という ASCII 文字 2 バイトが「絵文字コード」です。
絵文字開始コードの一バイト目 "" と絵文字終了コードの "" は「制御コード」と呼ばれる、いわば文字の割り当てられていない文字コードで、具体的にはそれぞれ "0x1B" (ESC)と "0x0F" (SI)です。( "0x" は「16進数表記ですよ」というしるし)
絵文字コードの部分は、第一バイトが "0x45" 〜 "0x47"、第二バイトが "0x21" 〜 "0x7A" の範囲にありますが、今後も拡張があるかもしれません。第一バイトが同じ絵文字の場合は、第二バイトの文字を複数続けて書いても構わないようです。一方、第一バイトが異なる絵文字の場合は、一旦絵文字終了コードで絵文字を終わらせてから、改めて絵文字開始コードから書き始める必要があります。
さて、ここまで「絵文字開始コード」「絵文字コード」「絵文字終了コード」という言葉を用いましたが、これはわかりやすく説明するために勝手に作った用語で、正確な表現ではありません。
文字コード本来の構造から言いますと、 J-SKY 絵文字はエスケープシーケンスを用いて表されています。エスケープシーケンスは、文字コード表に載りきらない文字などを ESC コードとそれに続く ASCII コードで表現する方法で、終端文字が現れるまでは別の文字コード体系になっていることになります。
J-SKY 絵文字については、 "0x1B" がエスケープシーケンスの開始、 "$" がJ-SKY絵文字であることの宣言、 "0x0F" が終端文字です。
J-SKY 絵文字を除去する置換文は次のようになります。
Perl J-SKY絵文字除去置換文 # 2001.11.03更新 # EUCでもShift_JISでもJISでもよい。 $str =~ s/\x1B\$[\x21-\x7A]+\x0F//g;
なお、 J-SKY 絵文字は制御コードと ASCII コードからなるので、 jcode.pl で誤変換されることはありません。
絵文字を出力する際には、 J-PHONE のサイトのからコードをコピー&ペーストするのが簡単ですが、テキストエディタによってはペーストがうまくいかない場合があるようです(おそらく制御コードが含まれているため)。そういった場合でも次のようにコードで直接記述すれば大丈夫です。この色で示した部分が絵文字コードです。
Perl print "\x1B\$E!\x0F";
文字列をシングルクオートで囲むと "\" の文字がそのまま出力されてしまいますので、ダブルクオートで囲むようにしてください。
J-SKY 絵文字は全部で 270 種類(90 種類 x 3 セット)ありますが、これらは全ての J-SKY 端末で表示が可能なようです。
ただし、入力には制限があるようで、例えば J-SH02 のような古い端末では 90 種類(絵文字コードが "G" から始まる 1 セット)しか入力できません。
CGIぽんはINFOJAMの安価で快適なサーバを利用しています。
|
CGIぽん (C)Copyright 2000-2002 OGATA,Tetsuji
|