javaScriptでURIエンコードを行うには -encodeURI -encodeURIComponent -escape の関数を使う事ができる。 この3つの違いはエンコードしない文字に違いがあって
;/?:@&=+$-_!~*.,()a#'
-_!~*.()a'
*+-_./
となっています。 なので(http://〜)を含むURLをエンコードするには、コロンやスラッシュを変換したい用途、したくない用途によって encodeURIComponent , encodeURI を使い分けるのがいいでしょう。
通常 encodeURIComponent を使うのがいいと思います。 また escape は 全角文字など文字コードが256以上の値を持つ文字は %uxxxx という形式に変換しますのでURLエンコード用途では使用しないほうがいいでしょう。
e_uri = encodeURIComponent( 'http://xxx.yyy.zzz/aaa.cgi?bbb=ccc' );
[https://pgmemo.tokyo/data/filedir/438_1.html:title=こちらの動作サンプルコード]をご使用ください。
これらの関数はUTF-8でエンコードするのでそれ以外の文字コードを使ったページの場合は 使えません。 shift_jis , euc-jp でurlエンコードを行いたい場合は http://www.junoe.jp/downloads/itoh/enc_js.shtml こちらの関数を使うといいでしょう。
URLデコードするときには decodeURIComponent , decodeURI を使用しますが、これらの関数はデコードできない文字が含まれるときエラーでスクリプト自体を終了させるので、必ず try catch しましょう。