Snap.Shot.cx

[サーバ] 短縮URLに日本語を使う
02/21/2010 22:28 (投稿者:たかの)

前回の記事「URL短縮はmod_rewriteで」の執筆時には想定していませんでしたが、短縮名のトークンには、utf-8で記述することで日本語も受け入れることができます。(というかさっき思い立って確認したばかり)
これはURL部のマルチバイト文字をutf-8として扱うブラウザ(FirefoxとWebkit via Lunascapeしか確認していないが)であれば、アドレスバーにそのままタイプしても問題なく機能します。
ただ残念ながら、まだ多く残存していると思われるIE6は「常にUTF-8としてURLを送信する」オプションが有効になっていないと、アドレスバーの文字列をutf-8として取り扱ってくれないようです。

「常にUTF-8としてURLを送信する」オプションのデフォルトがon/offどちらかは最早調べる気にもなれませんが、いずれにしても短縮URLはリンクやメールの文中に記述するケースのほうが多いでしょうし、そうなると挙動が確実とはいえないブラウザのエンコーディング変換に頼るよりは、あらかじめ文字列をエスケープして使用したほうがよさそうです。

このエスケープを行う簡単なPerlスクリプトを書いてみました。
bashと共に使用します。

snapshotShortUrl.cgi

パッと見で分かるとおり、あくまでquick hackなので、難しい処理をしているわけでもセキュリティに配慮しているわけでもありません。
とくに変換元となるテキストファイルは、十分に信頼できるという前提で考えています。
通常のページビューと同じ感覚で叩かれると負荷的にも決して優しいとはいえないでしょうから、一般公開には向かないと思います。
短縮URLの作業者が個人的に使用する程度に止めておいたほうがよいでしょう。

エンコードされたURLであっても、FirefoxやWebkitなど対応したブラウザでは、ちゃんとデコードされた日本語のURLとしてステータスバーに表示されます。
実行結果のサンプルも置いておきますので参考にしてください。
元となるURL一覧のテキストは前回と同じ場所に置いてあります。

メールでコメント

(Powered by Zope)
リンクはご自由にどうぞ。各記事には記事番号がついていますので、URLは変わりません。
© 2000-2013 Yukimasa TAKANO, all RIGHTs reserved.