‎escape()とencodeURI()とencodeURIComponent()の違いescape()encodeURI()encodeURIComponent()それぞれの違いについてまとめました。escapeescapeは古くからある関数ですが、非推奨になりました。これはescapeの仕様が明確に定められていなかったため、ブラウザやバージョンにより異なる実装がなされた為です。IE3.0以前やNetscapeなどでは、HTMLソースの文字コードにしたがってエンコードしていました。IE4.0以降やFireFox・Chromeなどではマルチバイト文字をUnicodeベースでエンコードします。encodeURIやencodeURIComponentがある現在では、あえて使用する意味はないと思います。下記のサイトでは、いろいろなブラウザの実行結果を掲載しています。一撃必殺JavaScript日本語リファレンスescapeに対し、encodeURIとencodeURIComponentは比較的新しい関数です。edition」で導入され、IEでは5.5から採用されました。encodeURIencodeURIは、UTF-8ベースでエンコードします。おいて特別な意味を持つ予約文字「/」「:」「&」「+」「=」などはエンコードしません。よって不完全なエンコードになります。encodeURIを使用する場合には、対象のURI文字列内のパラメータの値に予約文字が存在しないことが前提になります。「(3+5)/2=4」→「(3+5)/2=4」encodeURIComponentencodeURIComponentは、URIComponent(URIを構成する部分文字列)をUTF-8ベースでエンコードします。URIで使用する記号をすべてエンコードするため、完全なエンコードになります。「/」「:」「&」「+」「=」などもエンコードする為、URI全体に適用するとそれ自体はURIとして機能しなくなります。「エンコードが必要な部分ごとにencodeURIComponentをかけた上で結合しURIを完成させる」というのがあるべき姿です。#」を含まないことが確定している場合には、encodeURIでも問題ありません。