JavaScriptリファレンス

URLエンコード







URLエンコード


動的ページにパラメータをクエリーストリングなどで渡す際、URLとして使えない文字列を渡すときなどに、
URLエンコードがよく使われる。
文字コードを1byte単位で%xxのように%似つづけて0からFまでの16進文字にした形だ。

文字列を%xxのようなURLエンコードにするときは、
encodeURI("文字列");
encodeURIComponent("文字列");
のようにすると、URLエンコードされた文字列が返される。

encodeURIは、URLとして使えない文字をすべてエスケープする。
encodeURIComponentは、それ以外にも、「&」や「=」なども変換する。
「&」や「=」はパラメータの区切り文字として使われることが多く、
encodeURIよりもencodeURIComponentの方が使用頻度が高いと思う。
というか、encodeURIComponentがあればencodeURIはいらない感じ。

エスケープされた文字列を復元するのには、
decodeURI("%E6%96%87%E5%AD%97%E5%88%97");
decodeURIComponent("%E6%96%87%E5%AD%97%E5%88%97");
のように。
こちらも、decodeURIComponentだけでいいと思う。

UTF-8に復元可能な文字コード以外を復元しようとするとエラーとなりスクリプトが停止する。
UTF-8以外の文字が渡される可能性がある場合は例外処理を行うように。


escapeおよびunescapeも似たようなことをする関数だが、
ブラウザによってはマルチバイト文字が「%uxxxx」のように変換されるため、
同じブラウザ以外での復元が難しく、サーバーサイドのプログラムとの連携がしにくい。
現在ではほぼ使われない。


関連
decodeURI
decodeURIComponent
encodeURI
encodeURIComponent
escape
unescape






[編集] [新規] [削除] [バックアップ] [アップロード] [ログイン] [管理]
whwiki 1.3