My Photo

« PHPメモ019:エンコーディング関連の関数 その2 | Main | PHPメモ020:ファイル関連の関数 その1 »

March 11, 2012

URLエンコード、BASE64エンコード、MIMEヘッダエンコード

PHPの記事でいろんなエンコードが出てきたので簡単にまとめ。

URLエンコード

RFC3986では「パーセントエンコーディング」と呼んでいる。URLの文字列やフォームで送信されるデータに使われる。
以下のようにエンコードされる。
・アルファベット、数字、ピリオド、アンダースコアはそのまま。
・スペースは '+' に変換。
・それ以外は "%xx"(xxは16進数)に変換。ただし、Shift_JISの2バイト目などが非予約文字(URIで特別な意味を持たない文字?英数字、ハイフン、ピリオド、アンダースコア、チルダ)に対応する場合は、その文字をそのまま使用してもよい。
#「SHIFT_JISの2バイト目など」の「など」って何だ?他にどういう場合があるのか?
"abc123 あいうアイウ +-_:/" UTF-8でURLエンコードすると
abc123+%E3%81%82%E3%81%84%E3%81%86%E3%82%A2%E3%82%A4%E3%82%A6+%2B-_%3A%2F
Shift_JISでLエンコードすると
abc123+%82%A0%82%A2%82%A4%83A%83C%83E+%2B-_%3A%2F
になる。

BASE64エンコード

データを印字可能な64文字のみで表す。Eメールで広く使われている。
以下のようにエンコードする(例:UTF-8の"あいうab")

  1. 2進で表現する。
    1110 0011 1000 0001 1000 0010 1110 0011 1000 0001 1000 0100 1110 0011 1000 0001 1000 0110 0110 0001 0110 0010
  2. 6ビットごとに区切る。6ビットに足りない分は0で埋める。
    111000 111000 000110 000010 111000 111000 000110 000100 111000 111000 000110 000110 011000 010110 0010[00]
  3. 各6ビットを対応表で印字可能文字に置き換える。対応表はASCIIコード表などではなく、BASE64の独自のもの。
    4 4 G C 4 4 G E 4 4 G G Y W I
  4. 4文字ごとにまとめる。4文字に足りない部分は'='で埋める。
    44GC 44GE 44GG YWI=

MIMEヘッダエンコード

=?<文字セット>?<エンコーディング>?<エンコードされたテキスト>?=

encodingはBかQ。Bはbase64、Qははほぼquoted-printableと同じ符号化方法。

UTF-8の"あいうab"をエンコーディングBでエンコードすると
=?UTF-8?B?44GC44GE44GGYWI=?=
になる。

参考ページ:
付録D URLエンコーディング(URLエンコード または URLエスケープ)
パーセントエンコーディング - Wikipedia
Base64 - Wikipedia
Multipurpose Internet Mail Extensions - Wikipedia
Uniform Resource Identifier (URI): 一般的構文

« PHPメモ019:エンコーディング関連の関数 その2 | Main | PHPメモ020:ファイル関連の関数 その1 »

プログラミング、技術情報」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/54199610

Listed below are links to weblogs that reference URLエンコード、BASE64エンコード、MIMEヘッダエンコード:

« PHPメモ019:エンコーディング関連の関数 その2 | Main | PHPメモ020:ファイル関連の関数 その1 »

May 2017
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof