2009年4月11日土曜日

[DOCOMO] [Web] DOCOMO絵文字仕様 SJIS/Unicode編

唐突ながらDOCOMO絵文字仕様について。ソースとしてMobilePictogramConverterを参照している。SJISの第一バイトは0xF8および0xF9, 第二バイト0x40, 0x7Eの範囲, 0x80, 0xFCの範囲となる。UnicodeとSJISの境界を見れば一部飛んでいる部分がある。この部分には隠し絵文字が該当する。
  • (c1 == 0xF8 c1 == 0xF9) &&
  • ((c2 >= 0x40 && c2 <= 0x7E) (c2 >= 0x80 && c2 <= 0xFC));

参照

DOCOMOのUCSからSJISへの変換は以下のルールとなる。


if ( c >= 0xE63E && c <= 0xE757 ) { int code; if ( c <= 0xE69B ) { code = c+0x1261; }else if ( c <= 0xE6DA ) { code = c+0x12A4; }else{ code = c+0x12A5; } return code; }else{ return c; }


実際に境界値を見てみる。0xE63E+0x1261=F89F 0xE69B+0x1261=0xF8FC, 0xE69C+0x12A4=0xF940,0xE6DA+0x12A4=0xF97E,0xE6DB+0x12A5=0xF980,0xE757+0x12A5=F9FC。次にSJISからUTF-16を見てみる。


if ( sjis >= 0xF89F && sjis <= 0xF9FC ) { int code; if ( sjis <= 0xF8FC ) { code = sjis-0x1261; } else if ( sjis <= 0xF97E ) { code = sjis-0x12A4; } else { code = sjis-0x12A5; } return code; }else{ return sjis; }
UCSでのDOCOMO絵文字の範囲は0xE63E,0xE757となる。

0 件のコメント:

コメントを投稿