URLエンコード

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索

URLエンコード(ゆーあーるえるえんこーど)とは、URIにおいて使用できない文字を使う際に行われるエンコード(一種のエスケープ)の俗称である。RFC上ではPercent-Encoding(パーセントエンコーディング)という名称である。

目次

[編集] 概要

URIの規則を定める RFC 3986 では、URIに、非予約文字[1]でもなく、また、URIの構文を示すために用いている予約文字[2]でもない文字を用いる場合には、その文字の代わりに「%xx」(xxは16進数)という形のコードを表記することが定められている。その際に、日本語の文字などで、どの符号化を用いるかは環境によって異なる。

マルチバイト文字はバイト単位で変換する。Shift_JISの2バイト目など、バイトが非予約文字に対応するなら、その文字をそのまま使用しても良い。

たとえば「ウィキペディア」を、各種の文字コードを用いてURLエンコードすると以下のようになる。

  • Shift_JIS - %83E%83B%83L%83y%83f%83B%83A
  • EUC-JP - %A5%A6%A5%A3%A5%AD%A5%DA%A5%C7%A5%A3%A5%A2
  • UTF-8 - %E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2

[編集] application/x-www-form-urlencoded

application/x-www-form-urlencodedでは、半角スペース(ASCIIコード 20)は「+」に変換される。このため、バイナリデータをBase64経由で直接POSTすることはできず、下記の手順でBase64Urlに変換してPOSTする必要がある。

  1. BASE64でテキスト化
  2. "+"を"-"に置換
  3. "/"を"_"に置換
  4. POSTでデータを送信
  5. "-"を"+"に置換
  6. "_"を"/"に置換
  7. BASE64でバイナリに戻す

また、複数のフォーム項目を送信する場合、各項目は「&」(アンパサンド)区切りで送信される。

[編集] 脚注

  1. ^ RFC 3986 では、ASCIIのコード範囲内の英字(大文字・小文字)、数字、ハイフン “-”、ピリオド “.”、アンダースコア “_”、チルダ “~”が非予約文字 (Unreserved Characters) である。
  2. ^ RFC 3986 では、ASCIIのコード範囲内のコロン “:”、スラッシュ “/”、疑問符 “?”、シャープ “#”、角括弧 “[”、“]”、単価記号 “@”、感嘆符 “!”、ドル記号・ペソ記号 “$”、アンパサンド “&”、アポストロフィー・シングルクオート “'”、丸括弧 “(”、“)”、アスタリスク “*”、正符号・加算記号 “+”、コンマ “,”、セミコロン “;”、等号 “=”が予約文字 (Reserved Characters) である。

[編集] 関連項目

個人用ツール
名前空間
変種
操作
案内
ヘルプ
ツールボックス
他の言語