続・へぇボタンふたたび

色々考えた結果、以前でぃばぁさんのサイトCubic.com:PukiWiki/改造/URL Encodeの代わりにPunycode Encodeを使うという記事があるのを思い出した。これを利用して、へぇボタン用のアドレスにして、そのアドレスから本ページにリダイレクトさせればいいじゃん。しかも、うまくいけば、短縮アドレス用にも当然使える。この記事は、サーバーにインストールしてコンパイルする形式なので使えなかったが、もしかしたら、phpの形で配布されているところがあるかもしれない。さっそくGoogle:punycode phpで調べてみることにした。

その結果Punycode Converterというのを発見。わかりやすい解説があったので案外楽にプラグイン化できた。とりあえず、プラグインの形でページで呼び出したときに、変換後のアドレスを出力するようにして、cmd=の形で呼び出されたときに逆変換してリダイレクトという仕様で開発することにした。これによって・・・

ラグナロクオンラインのページの場合

変換前
http://logue.tk/ラグナロクオンライン.html
変換後
http://logue.tk/?cmd=puny&id=xn--ecklod4kqhe3a0dc

ファイナルファンタジー11のページの場合

変換前
http://logue.tk/ファイナルファンタジー11.html
変換後
http://logue.tk/?cmd=puny&id=xn--bckai5f8a2dxdd1r4czes0621aa

これだけアドレスの長さが違ってくる。しかも、UTF-8の場合3バイトで1文字を表しているため、どうしてもアドレスが長くなってしまいがちである。

で、早速へぇボタンにこの機能をつけてみたが・・・。

050709_01.png

_| ̄|○

今度はhttp://logue.tk/?cmd=puny&id=xn--bckai5f8a2dxdd1r4czes0621aaのうちの肝心のpunycode化されたアドレスの部分が消失している。どうやら、ちゃぶろ側では、&が含まれていると、それ以降をカットしてしまっているらしい。そうなると、Getメゾットで動作を振り分けるやり方ではダメで、オーソドックスにjump.php?xn--bckai5f8a2dxdd1r4czes0621aaという呼び出し方をしないとダメなようである。でも、このプラグインはそれなりに使えると思う(アドレスが長いと嘆く人は多いだろう)ので、pukiwiki.org:自作プラグイン/puny.inc.phpにとりあえず、ページを作ってみた。バグは多いが・・・。

とりあえず、へぇボタンは使えるようにしたい。面倒なのでgo.phpというpunycode専用のスクリプトを用意して、そこからとばすようにしてみた。で、例によってPukiWikiのソースにハッキングをかけて・・・

PluginRenderer::executePluginBlock(): Plugin #code() is not implemented.

やってることは至極簡単である。これによって短縮URLは、http://logue.tk/go.php?blog/2005-07-09となり、ちゃぶろには、http://vote.chbox.com/he.jsp?enc=4&id=blog/2005-07-09&by=Epilogue/LogueWiki&url=http://logue.tk/go.php?blog/2005-07-09&gr=Wikiという形でデーターが送られるだろう。だが、日本語が含まれていると「web!)´!)!)!)!) の編集 - Epilogue/LogueWiki」みたく相変わらず化ける。ページタイトルは、idで一緒にちゃぶろに送っているはずなのにこれはいかに?まぁ、ページが表示されるだけよしとしよう。