日々のアンテナ

ARTICLE PAGE

[javascript]シャープ記号(#)をエンコードする

またまた仕事でプチはまったこと。
urlパラメタにシャープ(#)を含む文字列を渡した場合、#以下は無視されてしまう。
エンコードすればいいじゃんと思ってencodeURIをつかったけどこれだと#はエンコードされない。
どーしよー、と思ったら、encodeURIComponentという関数もあるらしい。
違いはエンコードする文字列の種類なんだそうで、encodeURIComponentには#が入ってる。

■ encodeURI()がエンコードしない文字列

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

■ encodeURIComponent()がエンコードしない文字列

* _!~*.()a'


こちらのサイトを参考にさせていただきました♪
http://logic.moo.jp/memo.php/archive/438

ていうかなんで二種類必要なのかわかんない。
encordURIを使っていてひそかにバグを抱えている案件がありそうだ。

今回も数十万ある中でたまたま#を含む場合だけ動きが変だったので気づいたけど、それをテストしてなければ気づかなかったです。

Comments 0

Leave a reply