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