utf8-quoted-pair

quoted-pair (電子メール、HTTP)

電子メールにおける quoted-pair

[1] RFC822 では、 \CRLF で (quote された) CRLF を表すことが出来ました。

[2] しかし、 RFC2822 は (RFC 822 からの変更点の章も含めて) >>1 のことに一切触れていません。これは非互換変更に当たります。

[3] BruceLilly は2003年6月23日に ietf-822 で、これは意図的なものなのか? RFC 2822 は >>1 の禁止を狙ってるのか? と聞きました。 すると ned じーさんは、そうだったら良かったのになあと言っております。

[8] RFC 822BNF 構文上は確かに CRLFquoted-pair にすることができるのですが、 3.4.3. は注釈内の quoted-pairCRLF は直後に LWSP-char が必要と述べており、 3.4.5 は引用文字列に関して同様の制約をほのめかしており、 domain-literal に関する規定はありませんが、 3.2. との整合性を鑑みても、 明らかに RFC 822 の意図は \ + CRLF + LWSP-char によって CRLF を表現できるようにするものでしょう。

[10] この問題は RFC Errata にも (2013年に!) 報告されています。

[4] MUAMTA には quoted-pair を解しないものがあって困っていましたが、最近では常用されている MTA・MUA でそういう腐ったものは絶滅したと考えられています。

しかし、現在でも構文解析自体はうまくできるようであっても、 メッセージ一覧の表示時や返信メッセージの作成で○○さんは書きましたのような雛形を用意する時に quoted-pair を復号せずに残してしまう困った MUA が今でもあるようです。 (名無しさん [sage] 2005-02-22 01:03:49 +00:00)

[12] RFC 2822 の制約をまとめると、

[7] RFC 5335 により、 message/global においては utf8-quoted-pair として UTF-8 の使用が認められるようになりました (RFC 5335 4.3)。

ただし、 message-id では認められていません。

[17] これは RFC 2822 (>>12) に、 U+0080-U+10FFFF を追加するものです。

[20] RFC 6532 (>>19) も同様に U+0080-U+10FFFF を追加するものです。

HTTP における quoted-pair

仕様書

文脈

[24] 引用文字列注釈で使えます。

構文

[23] 構文は次のように定義されています >>22

     quoted-pair    = "\" ( HTAB / SP / VCHAR / obs-text )

[26] 引用文字列では、 "\ 以外では quoted-pair生成するべきではありません >>22

[27] 注釈では、 (, ), \ 以外では quoted-pair生成するべきではありません >>22

構文解析

[25] 受信者は、値を処理するときは、 \ の後のオクテットに置換して扱わなければなりません >>22

歴史

[5] RE: Escaping <\> in HTTP Digest (RFC 2617) (Eric Lawrence 著, 2007-03-24 03:59:52 +09:00 版) <http://lists.w3.org/Archives/Public/ietf-http-wg/2007JanMar/0302.html> (名無しさん 2007-03-26 10:21:30 +00:00)

[6] RE: Escaping <\> in HTTP Digest (RFC 2617) (Eric Lawrence 著, 2007-03-24 05:24:38 +09:00 版) <http://lists.w3.org/Archives/Public/ietf-http-wg/2007JanMar/0303.html>

[28] RFC 2486 - The Network Access Identifier ( 版) <https://tools.ietf.org/html/rfc2486#page-4>

char = c / ( "\" x )