« DoBeDo 2.5 | メイン | javascript で Query String »

javascript: escape(), encodeURI(), encodeURIComponent() 比較

あとで読む

javascript の escape(), encodeURI(), encodeURIComponent() 関数群について、どの文字がエンコードされてどの文字がエンコードされないのか分かりにくいのでまとめておく。

まずは、対象範囲 %20(半角スペース)〜%7E(チルダ~)

元データ

 !"#$%&'()*+,-./
0123456789
:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
[\]^_`
abcdefghijklmnopqrstuvwxyz
{|}~

escape()

%20%21%22%23%24%25%26%27%28%29*+%2C-./
0123456789
%3A%3B%3C%3D%3E%3F@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%5B%5C%5D%5E_%60
abcdefghijklmnopqrstuvwxyz
%7B%7C%7D%7E%7F

encodeURI()

%20!%22#$%25&'()*+,-./
0123456789
:;%3C=%3E?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%5B%5C%5D%5E_%60
abcdefghijklmnopqrstuvwxyz
%7B%7C%7D~%7F

encodeURIComponent()

%20!%22%23%24%25%26'()*%2B%2C-.%2F
0123456789
%3A%3B%3C%3D%3E%3F%40
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%5B%5C%5D%5E_%60
abcdefghijklmnopqrstuvwxyz
%7B%7C%7D~%7F

まとめ

  • 全ての関数で[0-9A-Za-z]は変換されない。
  • escape()で変換されない記号は *+-./@_ だけである。
  • encodeURI()で変換されない記号は !#$'()*+,-./:;=?@_~ である。
  • encodeURIComponent() が変換しない記号は !'()*-._~ のみである。
  • マルチバイトなコードについては、たとえば、UTF-8の「あ」は escape() だと %u3042、encodeURL()およびencodeURIComponent() だと %E3%81%82。

おまけ。sourceに入力して encode ボタンを押すと 3つの関数それぞれでどのように変換されるか分かるツール。

source:
escape():
encodeURI():
encodeURIComponent():

ついでにunescape(), decodeURI(), decodeURIComponent() を使ってデコードするツールも置いておく。

input:
output:
decode by:

Trackbacks

Trackback URL:
http://groundwalker.com/mt/gwtb.cgi/128

» Ajax from assari (PukiWiki/TrackBack 0.3)
Ajax(アジャックス、エイジャックス)とは、Asynchronous JavaScript + XML の略で、XMLHttpRequest(HTTP通... [More...]

Comments (3)

「PHPとJavaScriptのURIエンコードを比較」by JavaScript++かも日記
http://jsgt.org/ajax/ref/charset_test/responsetext/php/urlencode.php
はC/S間での文字列処理の参考になる。

dsk:

検証リソース・ツール使わせていただきました。ありがとうございます。

コピペ厨な僕が、つづりミスのご報告をば。
encodeURICompoment→encodeURIComponent

dskさん、ご指摘どうもですー。修正しましたー。

« DoBeDo 2.5 | メイン | javascript で Query String »

スポンサー

関連ブログ

あわせて読みたい

関連キーワード

Powered by
Movable Type 3.34

連絡先