* [CODE(822)[Encoding:]] 頭欄 (822) [19] [[RFC 1505]] の規定する [DFN[[CODE(822)@en[Encoding:]] [[頭欄]]]]は、 [[メッセージ]]の[[本体]]の[[符号化]]方式を指定します。 [20] [[RFC 822]] [[メッセージ]]は[[頭部]]と[[本体]]で構成され、 両者は[[空行]]で分けられています。 [[RFC 1505]] は、このうちの[[本体]]の部分を更に構造化し、 1つ以上の[DFN[[RUBY[[[部分]]][ぶぶん]@en[part]]]] ([DFN[[RUBY[[[本体部分]]][ほんたいぶぶん]@en[body part]]]]]]) により構成されるとしています。 各[[部分]]の[[行数]]と書式 ([[符号化]]) は、 [CODE(822)@en[[[Encoding]]:]] [[頭欄]]で指定します。 更に、各[[部分]]の間には[[空行]]を挿入します。 [21] [[RFC 1505]] の提案する方式は、実際にはほとんど使われませんでした。 同様の機構である [[MIME]] がよく用いられています。 [5] :状態:[[IETF]] [[実験的]] [[RFC]] :[[欄名]]:[CODE(822)@en[[[Encoding]]]] ([Q@en[encoding]] ([Q[符号化]]) より) [4] 仕様書: - [DEL[[[RFC 1154]] ([[実験的]]) ]] - [[RFC 1505]] ([[実験的]]) ** 構文 [3] - [6] [CODE(ABNF)@en[[DFN[欄本体]] := *([[CFWS]] 部分欄 [[CFWS]] ",") [[CFWS]] 最後の部分欄 [[CFWS]]]] - [7] [CODE(ABNF)@en[[DFN[[RUBYB[部分欄]@en[subfield]]]] := 行数 [[CFWS]] 鍵語 *([[CFWS]] [[鍵語]])]] - [8] [CODE(ABNF)@en[[DFN[最後の[RUBYB[部分欄]@en[subfield]]]] := [行数 [[CFWS]]] 鍵語 *([[CFWS]] [[鍵語]])]] - [9] [CODE(ABNF)@en[[DFN[[RUBYB[行数]@en[count]]]] := 1*[[DIGIT]] ;; [[十進数]]]] - [10] [CODE(ABNF)@en[[DFN[[RUBYB[鍵語]@en[keyword]]]] := [[ALPHA]] *([[ALPHA]] / [[DIGIT]] / "-" / ".") ;; [[大文字]]・[[小文字]]を区別しません]] -- [15] [[英数字]]というだけで、 [CODE(charname)@en[[[HYPHEN-MINUS]]]] や [CODE(charname)@en[[[FULL STOP]]]] については明記されていません。 --[16] [CODE(ABNF)@en["X-"]] で始まる名前は実装規定の[[符号化]]用に予約されています。 --[17] その他の[[鍵語]]は [[IANA]] に登録しなければなりません。 ;; [[RFC 1505]] 2 章の規定より作成 [11] '''行数''' [[部分]]の[[行数]]を表します。 [[部分]]同士は互いに[[空行]]で区切られますが、 この[[空行]]は[[行数]]に''含みません''。 [SRC@en[RFC 1505 2.2]] [12] '''鍵語''' [[符号化]]の種類を表します。 [SRC@en[RFC 1505 2.3]] 複数指定した場合 ([DFN[[RUBYB[入れ子の鍵語]@en[nested keyword]]]]) は、多重符号化されていることを表します。 これは、単純に複数回[[符号化]]されていても構いませんし、 [[符号化]]をより詳細に説明する[[引数]]のようなものでも構いません。 [SRC@en[RFC 1505 2.3.1]] 入れ子の鍵語の順序には意味があり、 [[復号]]する際は、最初から最後の順に処理します。 [SRC@en[RFC 1505 2.3.1]] [25] '''選択肢''' [[RFC 1154]] では、[[鍵語]]は1つだけで、 その後に[[任意選択]]で[DFN[[RUBY[選択肢][せんたくし]@en[options]]]]を指定できました。 [[選択肢]]の構文は[[鍵語]]依存で、 [[読点]]は含まないとされていました。 [[RFC 1505]] との互換性はありません。 [[#comment]] ** 鍵語 [18] ,[[鍵語]],説明,状態,出典 ,[CODE(822)@en[[[EDIFACT]]]],[[EDIFACT]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[EDI]]]],[[EDI]],"[DEL[[[廃止]] ([[IETF]] [[実験的]] [[RFC]])]] → [CODE(822)@en[[[EDI-X12]]]]","[DEL@en[[[RFC 1154]]]]" ,[CODE(822)@en[[[EDI-X12]]]],[[EDI]] [[X12]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[encrypted]]]],[[PEM]],"[DEL[[[廃止]] ([[IETF]] [[実験的]] [[RFC]])]]","[DEL@en[[[RFC 1154]]]]" ,[CODE(822)@en[[[EVFU]]]],[[EVFU]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[DEL@en[[[RFC 1154]]]], [[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[FS]]]],[[ファイル・システム物体]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[Hex]]]],[[Base16]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[DEL@en[[[RFC 1154]]]], [[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[LZJU90]]]],[[LZJU90]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[LZW]]]],[[LZW]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[Message]]]],[CODE(MIME)@en[[[message/rfc822]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[DEL@en[[[RFC 1154]]]], [[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[PEM]]]],[[PEM]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[PEM-Clear]]]],[[PEM]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[PGP]]]],[[PGP]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[Postscript]]]],[CODE(MIME)@en[[[application/postscript]]]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[Shar]]]],[[シェル書庫]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[Signature]]]],[[署名]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[STARTTLS]]]],[[TLS]] 開始,"[[IETF]] [[提案標準]], [[IANAREG]]","[[IANAREG]]" ,[CODE(822)@en[[[Tar]]]],[[Tar]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[Text]]]],[CODE(MIME)@en[[[text/plain]]; [[charset]]=[[ISO-8859-1]]]],"[DEL@en[[[廃止]] ([[IETF]] [[実験的]] [[RFC]])]]","[DEL@en[[[RFC 1154]]]]" ,[CODE(822)@en[[[Text]]]],[CODE(MIME)@en[[[text/plain]]; [[charset]]=[[UTF-1]]]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[uuencode]]]],[[uuencode]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[DEL@en[[[RFC 1154]]]], [[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[URL]]]],外部 [[URL参照]],"[[IETF]] [[実験的]] [[RFC]], [[IANA]] 登録済","[[RFC 1505]], [[IANAREG]]" ,[CODE(822)@en[[[X-[VAR[*]]]]]],[[実装]]規定,"[[IETF]] [[実験的]] [[RFC]]","[DEL@en[[[RFC 1154]]]], [[RFC 1505]]" ,[CODE(822)@en[[[X.400]]]],[[X.400]],"[DEL[[[廃止]] ([[IETF]] [[実験的]] [[RFC]])]]","[DEL@en[[[RFC 1154]]]]" [23] [CODE(822)@en[[[STARTTLS]]]] は明らかに誤りだと思いますが・・・・・・。 [[RFC 2487]] にはまったく言及がありませんし・・・・・・。 [24] [CODE(822)@en[[[Encoding]]:]] [[頭欄]]がない場合の既定値は [CODE(822)@en[[[Text]]]] です。 [SRC@en[RFC 1154 2, RFC 1505 1]] [[#comment]] ** 実装 [1] [CODE(822)[Encoding]] 欄について [[Ned]] が Re: Mail/MIME permanent header registrations (2004年4月) で書いているところによると: - 行数じゃなくてバイト数を数えてる MUA がある。 - ファイル名を埋め込む MUA がある。 - 入れ子とか、 [[RFC 1505]] にある型の多くは、対応しているのが稀。 - 行数にせよバイト数にせよ、転送中に行折畳みとかタブ展開とか charset 変換とかがあると壊れる。 ([[名無しさん]] [WEAK[2004-04-20 08:34:45 +00:00]]) [2] というかむしろ、相互運用性に問題が出るほど実装があったということ自体驚き。 ([[名無しさん]] [WEAK[2004-04-20 08:35:26 +00:00]]) [22] [[行数]]の指定と実際の[[本体]]の長さに齟齬があったら? [[#comment]] ** 関連 [26] [[RFC 1154]] は [[RFC 1049]] の [CODE(822)@en[[[Content-Type]]:]] [[頭欄]]の置き換えを狙っていました (という記述は [[RFC 1505]] からはなくなっています)。 [[鍵語]]は [[RFC 1049]] と同じものが使えるので、 [[実装]]は [CODE(822)@en[[[Content-Type]]:]] を [CODE(822)@en[[[Encoding]]:]] の別名として使えると主張されています [SRC@en[RFC 1154 3.3]]。 しかし、実際には [[RFC 1049]] と [[RFC 1154]] で規定されている[[鍵語]]は中心部分が重なるだけで異なる[[集合]]ですし、 そもそも両者の構文も中核部分が一致するだけで互換性がありません。 [[#comment]] ** 例 [13] [SRC@en[RFC 1505 2.3]] [PRE(822 old example code)[ Encoding: 107 Text ]PRE] [14] 入れ子の鍵語の例 [SRC@en[RFC 1505 2.3.1]] [PRE(822 old example code)[ Encoding: 458 uuencode LZW tar [SPAN(comment)[(Unix binary object)]] ]PRE] これは、もとのデータが [[tar]] で[[書庫]]化され、 [[LZW]] で[[圧縮]]され、更に [[uuencode]] された状態で[[部分]]として458行分含まれていることを表します。 [[#comment]] ** メモ [[#comment]] * メモ [27] [CITE@en[Contributions by Opera]] ( ([[Anne van Kesteren]] 著, [TIME[2012-04-27 13:50:55 +09:00]] 版))