&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 }}