パーセントエンコーディング

出典: フリー百科事典『ウィキペディア(Wikipedia)』
URLエンコードから転送)
移動先: 案内検索

パーセントエンコーディング: percent-encoding)とは、URIにおいて使用できない文字を使う際に行われるエンコード(一種のエスケープ)の名称である。一般にURLエンコードとも称される。

URLエンコードと言う用語は上記のパーセントエンコーディングによる符号化と以下に記述するapplication/x-www-form-urlencodedによる符号化の2種類がある。半角スペースはパーセントエンコーディングでは「%20」に符号化されるが、application/x-www-form-urlencodedによる符号化では「+」に符号化される。

概要[編集]

URL Standardでは、URLのパス部分の構文解析の際、以下(path percent-encode set)に該当する文字であれば、UTF-8で符号化のうえパーセントエンコードする旨を規定している (URL Standard 4.4 URL parsing, path state)。パーセントエンコードとは、バイトの並びについて各バイトを「%XX」(XXは十六進法)という文字列への変換である。

  • C0制御パーセントエンコード集合 (C0 control percent-encode set)
  • U+0020 空白
  • U+0022 二重引用符 "
  • U+0023 番号記号 #
  • U+003C 小なり <
  • U+003E 大なり >
  • U+0060 バッククオート `
  • U+007B 開き波括弧 {
  • U+007B 開き波括弧 }

このほか、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

URL Standardの登場以前より存在する定義として、RFC3986のSection 2.1などが存在する。

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

HTTPPOSTメソッドでWebフォームの文字列を送信する場合に、文字列はエンコードして送信される。その際の符号化方法はMIMEContent-Typeがapplication/x-www-form-urlencodedで指定される。この符号化方法をURLエンコードと言うことがある。

この符号化方法は、URL Standard 5. application/x-www-form-urlencodedで定義されている。なお、標準文書として初めて登場したのはRFC 1866 HTML 2.0のSection-8.2.1であった。

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

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

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

脚注[編集]

[ヘルプ]

参考文献[編集]

関連項目[編集]