JavaScript で URL をエンコードする話。
手元にある古い本を参考にしていたので escape を使うことが多かったんだけど、 encodeURI あるいは encodeURIComponent を使った方が良いんだな。でもって、これらのことを調べたことがなかったのですが、Core JavaScript 1.5 Reference:Global Functions:encodeURI - MDCCore JavaScript 1.5 Reference:Global Functions:encodeURIComponent - MDCにある通り、ともにエンコード対象外となるのは
アルファベット 数字 -(ハイフン) _(アンスコ) .(ビリオド) !(エクスクラメーション) ~(チルダ) *(アスタリスク) '(シングルクォート) ((開きカッコ) )(閉じカッコ)
で、 encodeURI ではこれに加えて
;(セミコロン) ,(カンマ) /(スラッシュ) ?(クエスチョン) :(コロン) @(アット) &(アンパサンド) =(イコール) +(プラス) $(ドル)
がエンコード対象外になるとのこと。

Safari ではアドレスバーに表示される URL がエンコードされていないため、これをコピペしてリンクを作ると IE で適切にリンク先に飛べないことがあったのです。これまではその都度いちいち Firefox を起動して当該ページを開いてその URL をコピペしていたのですが、
javascript:alert('<a href="'+encodeURI(location.href)+'" target="_blank">'+document.title+'</a>');
というブックマークレットを使えば、コピペするためのタグが表示されます。そして、他の多くのブラウザではダイアログの文字列はコピペできないのですが、 Safari の場合はそれが可能なのです。これでhttp://ja.wikipedia.org/wiki/%E9%AD%81!!%E7%94%B7%E5%A1%BEというURLも簡単に作れるようになりました。
Posted by setomits at 10:06 | Comments: 0
Leave a comment
Required fields are marked with *
search
calendar
Sep 2010
SunMonTueWedThuFriSat
   1234
567891011
12131415161718
19202122232425
2627282930  
archives
photos on flickr
www.flickr.com
bookmarks on delicious