JavaScriptプログラムに関する各種メモ書き

JavaScriptでURIエンコード(URLエンコード)を行う

javaScriptでURIエンコードを行うには -encodeURI -encodeURIComponent -escape の関数を使う事ができる。 この3つの違いはエンコードしない文字に違いがあって

● encodeURI がエンコードしない文字列

;/?:@&=+$-_!~*.,()a#'

● encodeURIComponent がエンコードしない文字列

-_!~*.()a'

● escape がエンコードしない文字列

*+-_./

となっています。 なので(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=こちらの動作サンプルコード]をご使用ください。

●注意 1.

これらの関数はUTF-8でエンコードするのでそれ以外の文字コードを使ったページの場合は 使えません。 shift_jis , euc-jp でurlエンコードを行いたい場合は http://www.junoe.jp/downloads/itoh/enc_js.shtml こちらの関数を使うといいでしょう。

●注意 2.

URLデコードするときには decodeURIComponent , decodeURI を使用しますが、これらの関数はデコードできない文字が含まれるときエラーでスクリプト自体を終了させるので、必ず try catch しましょう。

添付ファイル1