2009年4月11日土曜日

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

次にAU絵文字について。前回の記事と同様にソースとしてMobilePictogramConverterを参照している。EZWebではWebで扱われるコードに癖がある。Webサイトで扱われるコードは以下の通り。絵文字を参照する<img icon="絵文字番号" />, <img localsrc="絵文字番号" />で指定するコンテンツ用コードおよび、数値文字参照によるUnicode表現、utf-8ページから送出される特殊Unicode, シフトJIS表現の絵文字コードとなる。詳しい変換方法も紹介する。

まずAUのUnicodeから見てみる。文字参照が参照するのはコードはUnicodeとなる。よって数値文字参照で指定されるコードの体系となる。範囲は以下の通り。

  • (uni >= 0xE468 && uni <= 0xE5DF) (uni >= 0xEA7F && uni <= 0xEB8E);

次にシフトJIS表現を見てみる

  • ((c1 == 0xF3 c1 == 0xF6 c1 == 0xF7) && ((c2 >= 0x40 && c2 <= 0x7E) (c2 >= 0x80 && c2 <= 0xFC))) (c1 == 0xF4 && ((c2 >= 0x40 && c2 <= 0x7E) (c2 >= 0x80 && c2 <= 0x8D)));

第一バイトが0xF3, 0xF6, 0xF7で第二バイトが0x40, 0x7Eおよび0x80から0xFCの範囲もしくは第一バイトが0xF4で第二バイトが0x40から0x7Eおよび0x80および0x8Dとなる。

シフトJISから派生するUTF-8ページから送出されるUnicodeはシフトSJISをベースとし-0x700の位置となる。この範囲はDocomo, Softbank双方のUnicode表現と重複しない。よってUTF-8ページにおいても入力処理ロジックは一つで対応できるということになる。

次に変換を見てみる。以下はUCS-2からシフトSJISへ変換する場合の対応表となる。境界値は新たに設定してある。シフトSJISからUTF-8変換のソースはMobilePictogramConverter に含まれているのでそちらを参照。

// 0xF340 -> 0xF352 -3443 D73 E5CD E5DF F340 F352
// 0xF353 -> 0xF37E -2259 8D3 EA7F EAAB F352 F37E
// 0xF380 -> 0xF3CE -2260 8D4 EAAC EAFA F380 F3CE
// 0xF3CF -> 0xF3FC -2241 8C1 EB0E EB3B F3CF F3FC
// 0xF440 -> 0xF47E -2308 904 EB3C EB7A F3FD F47E
// 0xF480 -> 0xF493 -2309 905 EB7B EB8E F480 F493
// 0xF640 -> 0xF67E -4568 11D8 E468 E4A6 F640 F67E
// 0xF680 -> 0xF6FC -4569 11D9 E4A7 E523 F680 F6FC
// 0xF740 -> 0xF77E -4636 121C E524 E562 F6FD F77E
// 0xF780 -> 0xF7D1 -4637 121D E563 E5B4 F780 F7D1
// 0xF7D2 -> 0xF7E4 -3287 CD7 EAFB EB0D F7D2 F7E4
// 0xF7E5 -> 0xF7FC -4656 1230 E5B5 E5CC F7E5 F7FC


UTF-16コードで扱える言語では実装が容易となる。

0 件のコメント:

コメントを投稿