Top/PukiWiki/改造/URL Encodeの代わりにPunycode Encodeを使う

URL Encodeの代わりにPunycode Encodeを使うはてなブックマーク

PukiWikiのURLについての問題

  • URLが長い。*1
  • 勝手にURL Decodeするクライアントがいる。

解決するには

rawurlencodeの代わりに他のエンコード法、例えばPunycode Encodeを使う。*2 Punycodeを使うのはASCII文字列が残るから。また何より、RFCの例が素晴らしいから :)

なお、正確には併用となります。Punycodeもどき。

インストール

Libidn

GNU IDN Library - Libidn - GNU Project - Free Software Foundation (FSF)

wget http://josefsson.org/libidn/releases/libidn-0.5.9.tar.gz
tar xvzf libidn-0.5.9.tar.gz
cd libidn-0.5.9/
./configure
make
make install

もしくは

apt-get install libidn11-dev

PHP-IDN

PHP-IDN (v1.1/Stable) @ Bayour.COM

wget http://php-idn.bayour.com/idn_1.1.tar.bz2
tar xvjf idn_1.1.tar.bz2
cd idn-1.1/
phpize
./configure
make
make install
ln -s /usr/local/lib/php/extensions/no-debug-non-zts-20020429/idn.so /usr/local/lib/php/extensions/idn.so
vi /usr/local/lib/php.ini
[php-idn]
extension="/usr/local/lib/php/extensions/idn.so"
;idn.allow_unassigned_chars = "0"
;idn.use_std_3_ascii_rules = "0"
idn.default_charset = "EUC-JP"

phpinfo()で確認。

パッチ (PukiWiki1.4.4)

静的コンテンツに偽装

PukiWiki/改造/静的コンテンツに偽装/ページを参考にお好みで。

パッチ

ディレクトリに偽装した場合の例

このサイトでの例。*3

備考

  • パッチを当てた後でもURL Encodeされた文字列は解釈できます。InterWikiはこちらで。
  • 計算量の割にはメリットが少ないかも。

関連

参考

関連

コメント等ありましたらどうぞ :)

最新の5件を表示しています。 コメントページを参照

  • Logue at 2005-02-28 (月) 18:09

    もっとも抜本的な方法だと思いますが、ちょっと敷居が高いですね。

    • でぃあばぁ at 2005-02-28 (月) 21:10

      実用性はかなり低いですよね。コストに見合うようには思えません。WikiNameはASCIIで運用するのが一番無難な気がします(苦笑)。ただ、それは分かってるんですが、やっぱり内容が分かり辛くなってしまうので、(無駄に)色々と考えてしまいます。このページの方法をとるよりは、サマリを別に設けてmake_link時に括弧書きで入れるなりする方がまともかもしれませんね。

  • Logue at 2007-02-21 (Wed) 20:53

    LogueWiki:Web素材/PukiWiki/puny.inc.phpで似たような動作をするプラグイン作ってみましたが、はっきり言って重いです。idna_convert.class.phpで英数字を含むテキストを変換させると、全部小文字に変換されるし・・・。

    • でぃあばぁ at 2007-03-27 (Tue) 23:31

      返信が遅くなりすみません。当サイトも同様な理由で止めてしまいました。

name:

Amazon


日本語.com/netはバリュードメインなら990円。

*1 階層化し過ぎなので、身から出たさび :p
*2 ただ、本来は国際化ドメイン名(IDN)のための技術なので、端から無理があります。
*3 今のところpuny_repurlenc.diffの大半を当てていないため、[[]]で作られるリンクのリンク先などは元のまま。
差分 一覧