記事本文
b:id:FTTH:20060814 経由
最近、ようやくはてなブックマークのお気に入り機能を利用しての情報収集を始めたところですが、それによって記事を書く、ということはまだありませんでした。 そこで今回は b:id:FTTH:20060814 経由で OpenCage: Firefox urlエンコード機能をUTF-8化する方法。を紹介。
この方法を行うとどうなるのかを簡単に説明すると、例えば hxxk.jp 内のタグ "ビール" が設定された記事のように、 URI にマルチバイト文字列を含むリソースへのリンクを指し示したい場合、 hxxk.jp 内では
<a href="http://hxxk.jp/tag/ビール">hoge</a>
と記述してもリンク元もリンク先も UTF-8 であるので Firefox では無事に該当リソースに到達できますが、同じようなリンクを Shift_JIS のリソースに記述すると http://hxxk.jp/tag/%83r%81%5B%83%8B という URI としてエンコードされてしまい、該当リソースに到達することができません。
なお、文字コードが同じであれば該当リソースに到達することができますが、そもそも仕様上非 ASCII 文字列を URI に直接記述することはしてはいけません。
そこで、私が hxxk.jp 内でタグページへのリンクを記述する場合は
<a href="http://hxxk.jp/tag/%E3%83%93%E3%83%BC%E3%83%AB">hoge</a>
のようにあらかじめ UTF-8 でエンコードした状態で記述しています。
このようなリンクであれば仕様の面でも問題ありませんし、 Shift_JIS のリソースや EUC-JP のリソースに記述しても問題なく該当リソースに到達することができます。
( よって、他の方がタグ "ビール" が設定された記事を参照したい場合も、 UTF-8 エンコード済の URI をコピーすることで問題なくリンクすることができます。 )
さて、ここで Firefox のアドレスバーに、 URI を直接入力してリソースを取得することを考えてみましょう。 現バージョンである Firefox 1.5.0.6 では、デフォルトでは network.standard-url.encode-utf8 の値は false になっていますので、アドレスバーにマルチバイト文字列を含む URI を入力すると Shift_JIS でエンコードされます。 すなわち、 http://hxxk.jp/tag/ビール とアドレスバーに入力しても http://hxxk.jp/tag/%83r%81%5B%83%8B という URI をリクエストした形になってしまいます。 そこで OpenCage: Firefox urlエンコード機能をUTF-8化する方法。を参考に network.standard-url.encode-utf8 の値を true にすると、 http://hxxk.jp/tag/ビール とアドレスバーに入力すると http://hxxk.jp/tag/%E3%83%93%E3%83%BC%E3%83%AB という URI をリクエストした形になり、無事に該当リソースに到達することができます。
network.standard-url.encode-utf8 の値が true の場合の hxxk.jp 閲覧時の tips
http://hxxk.jp/tag/hoge という URI をアドレスバーに入力することで、 hxxk.jp 内で特定のタグが設定された記事を探すことができます。 これはタグ名がアルファベットであれば network.standard-url.encode-utf8 の値に関係なく探すことができますが、 network.standard-url.encode-utf8 の値が true であれば日本語のタグ名でも同様に探すことができます。 ( 逆に言うと、 network.standard-url.encode-utf8 の 値が false であれば日本語のタグをアドレスバー入力で探すことはできません。 )
実は http://hxxk.jp/search/hoge という URI をアドレスバーに入力することでも、検索フォームから全文検索を行ったのと同じ結果が得られるように設定しています。 これも同じく network.standard-url.encode-utf8 の値が true であるという前提になりますが、日本語のキーワードでの全文検索を Firefox のアドレスバーから行うことが可能です。 頻繁に使うことは無いかもしれませんが、 hxxk.jp ジャンキーな貴方 ( きっといない ) は覚えておくと良いでしょう。
あと今思い付きましたが、はてなブックマークの文字コードも UTF-8 なので、 network.standard-url.encode-utf8 の値が true であれば http://b.hatena.ne.jp/t/hoge/ という入力で、はてなブックマーク上の日本語なグローバルタグが設定された記事群を得ることもできます。
関係あるような無いような話
数日前から VOX に招待していただいて、試しに使っているところです。 ちなみに英語版の方なので、日本語版の招待状が届き次第また色々と試してみるつもりでここ数日は全く触っていないのですが。
Busy as a cat burying shit - wu’s blog を見てみてビックリ、 http://wu.vox.com/library/post/トリプルブッキング.html という URI になっています。 Vox 内のソースでは UTF-8 エンコードはされているのでリンクを行う際のアドレスのコピーなどはそう問題はありませんが、マルチバイト文字列なファイル名でサーバに put されるっていうのは、私個人としてはあまり好きじゃないなあと思いました。 ( http://hxxk.jp/tag/hoge や http://hxxk.jp/search/hoge の場合は、サーバに静的に put するのではなく、リクエストがあるごとに動的に結果を返しているのです。 ) それならまだ日本語は dirify されてしまいますが、 Movable Type 3.x のように MTEntryBasename を用いた URI にしてくれた方が良いと思います。
それと MTEntryBasename で気付きましたが、 wonderful - wu’s blog の方はタイトルとファイル名 (wonderful.html) が一致しているのに、 Busy as a cat burying shit - wu’s blog の方はタイトルとファイル名 ( トリプルブッキング.html) が一致していないんですよね。 もしかして、最初は「トリプルブッキング」というタイトルにしていたけれど、そうしたら「トリプルブッキング.html 」という日本語ファイル名になっちゃったので、 "Busy as a cat burying shit" というタイトルに変更してみたにも関わらず、ファイル名は最初に決定した「トリプルブッキング.html 」で固定されてしまったという流れでしょうか ?

