[PHP-users 10901] Re: 0xf9とか0x77 とかどうやって覚えるのですか?

BosProject T.Takeuchi php-users@php.gr.jp
Wed, 16 Oct 2002 19:44:31 +0900


竹内です。

Date Wed, 16 Oct 2002 13:56:44 +0900
Tatsuya Kondo <konet@zc.wakwak.com> wrote:

> 余談ですが・・・
> J-PHONEの絵文字の処理
> > $j_emoji = pack(("c*",0x1b,0x24,0x45,0x21,0x0d);  // j-skyの絵文字「メール」
> の意味がいまいち分かりませんでした。
> ネットで調べた結果、
> http://specters.net/cgipon/labo/jt_emoji.html
> を、見つける事が出来ました。

 後藤さんが親切な回答をされておられましたので、私はヒントだけに
しておきますね。

 近藤さんが見つけられた上記のサイトの「J-SKY絵文字の正体」という
ところは特に繰り返し読んでみて下さい。

http://www.tohoku.j-phone-east.com/jsky/web/howto/jsky_page/reference/emoji/emoji.htm
http://e-words.jp/p/r-ascii.html

 そしてこの2つのサイトへ訪れて引用部分のpack関数がどういうことを
しているのか何日かかってでも理解できるまで睨めっこして下さい。

 文字コードの理解には欠かせない知識がここまでのヒントに溢れて
いると思います。

 実際、今までの話について理屈を教えて下さいと言われても、
教えづらい理屈ということもありますし、自分で理解できるまで
自分で学ばないと身につかない理屈でもあるんです。

 恥ずかしながらi-mode絵文字が出現するまで私は文字コードに
ついて勉強したことはありませんでした。なぜならperlなら
jcode.plという便利なライブラリがあり、PHPにはマルチバイト
関数がありましたので、覚える必要性を感じていませんでした。
ところが仕事として引き受けた案件でどうしても絵文字を処理
しなければならなくなり、3日ほど猛勉強しました。特に参考に
したのはjcode.plです。jcode.plがどのような仕組みで文字コードを
変換しているのかを漠然としながらも理解できるようになり、
PHPで同じことをしてみようと何度も何度も思い通りの結果が
得られないコードを書き続けました。

 今、j-skyの絵文字「メール」がどうして上の書き方で表示
されるのかだけを説明しても、他の絵文字を同様に表示させることは
できないと思います。本質を正しく理解しないとダメな話ですからね。
昨日の私の投稿に書きましたが、PIAさんのスクリプトや私の
スクリプトが何をしようとしているのかじっくり読んでみて下さい。
そうすれば何故perlスクリプトをS-JISで書いた場合に

print "表示不可能です\n";

 という部分が文字化けするかが分かるようになるはずです。

 幸い仕事としてやらなければならないという切羽詰った状況では
ないようですから、慌てずご自身のペースで理解を深めていかれたら
良いと思います。そしてi-modeやj-skyの絵文字を自由自在に
スクリプト内から表示できるようになれば、確実に近藤さんの
スキルはアップしているはずです。

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
合資会社ボスプロジェクト
竹内 輝明 webmaster@bos-project.com
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*