&tag(URLエンコード);
*目次 [#j99adfb6]
#contents
*参考情報 [#bc4a843c]
-[[付録D URLエンコーディング(URLエンコード または URLエスケープ):http://www.kinet.or.jp/hiromin/cgi_introduction/appendix/url_encode.html]]
-[[フォームデータの送信 -- ごく簡単なHTMLの説明:http://www.kanzaki.com/docs/html/htminfo32.html]]

*基本(FORMでデータを送信する場合を想定) [#n0167d34]

**エンコード方法 [#t06dcf6f]
-変数ごとにスペースを"+"に変換。
-変数ごとに英数字と一部記号以外を "% + 2桁の16進数"に変換
-変数名と値を"="で連結
-上記ペアを"&"で連結

**デコード方法 [#b5abeb8f]
エンコードの逆を行う
-"&"でクエリ文字列を分割。
-変数名と値のペアを"="で分割。
-"% + 2桁の16進数"を戻す。
-"+"をスペースに戻す。

**Rubyでエンコード [#u8d4aacf]
上記考えに基づくとパラメータごとにCGI.escapeして結合するのが確実か。
#pre{{
require 'cgi'
'http://www.example.com/test.cgi?name=' + CGI.escape('中田') + '&addr=' + CGI.escape('山梨')
}}
*GETとPOSTの違い [#ib15b882]
**GET [#h8869712]
-URL文字列に直接クエリが追加されて送信される。
 GET /test.cgi?name=nakata HTTP/1.0

**POST [#f0439ffc]
-BODY部分にクエリが追加されて送信される。
#pre{{
POST test.cgi? HTTP/1.0
...

name=nakata
}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS