7Network Working Group                                           K. Moore
 
8Request for Comments: 2047                       University of Tennessee
 
9Obsoletes: 1521, 1522, 1590                                November 1996
 
10Category: Standards Track
 
13        MIME (Multipurpose Internet Mail Extensions) Part Three:
 
14              Message Header Extensions for Non-ASCII Text
 
18   This document specifies an Internet standards track protocol for the
 
19   Internet community, and requests discussion and suggestions for
 
20   improvements.  Please refer to the current edition of the "Internet
 
21   Official Protocol Standards" (STD 1) for the standardization state
 
22   and status of this protocol.  Distribution of this memo is unlimited.
 
26   STD 11, RFC 822, defines a message representation protocol specifying
 
27   considerable detail about US-ASCII message headers, and leaves the
 
28   message content, or message body, as flat US-ASCII text.  This set of
 
29   documents, collectively called the Multipurpose Internet Mail
 
30   Extensions, or MIME, redefines the format of messages to allow for
 
32   (1) textual message bodies in character sets other than US-ASCII,
 
34   (2) an extensible set of different formats for non-textual message
 
37   (3) multi-part message bodies, and
 
39   (4) textual header information in character sets other than US-ASCII.
 
41   These documents are based on earlier work documented in RFC 934, STD
 
42   11, and RFC 1049, but extends and revises them.  Because RFC 822 said
 
43   so little about message bodies, these documents are largely
 
44   orthogonal to (rather than a revision of) RFC 822.
 
46   This particular document is the third document in the series.  It
 
47   describes extensions to RFC 822 to allow non-US-ASCII text data in
 
48   Internet mail header fields.
 
58Moore                       Standards Track                     [Page 1]
 
60RFC 2047               Message Header Extensions           November 1996
 
63   Other documents in this series include:
 
65   + RFC 2045, which specifies the various headers used to describe
 
66     the structure of MIME messages.
 
68   + RFC 2046, which defines the general structure of the MIME media
 
69     typing system and defines an initial set of media types,
 
71   + RFC 2048, which specifies various IANA registration procedures
 
72     for MIME-related facilities, and
 
74   + RFC 2049, which describes MIME conformance criteria and
 
75     provides some illustrative examples of MIME message formats,
 
76     acknowledgements, and the bibliography.
 
78   These documents are revisions of RFCs 1521, 1522, and 1590, which
 
79   themselves were revisions of RFCs 1341 and 1342.  An appendix in RFC
 
80   2049 describes differences and changes from previous versions.
 
84   RFC 2045 describes a mechanism for denoting textual body parts which
 
85   are coded in various character sets, as well as methods for encoding
 
86   such body parts as sequences of printable US-ASCII characters.  This
 
87   memo describes similar techniques to allow the encoding of non-ASCII
 
88   text in various portions of a RFC 822 [2] message header, in a manner
 
89   which is unlikely to confuse existing message handling software.
 
91   Like the encoding techniques described in RFC 2045, the techniques
 
92   outlined here were designed to allow the use of non-ASCII characters
 
93   in message headers in a way which is unlikely to be disturbed by the
 
94   quirks of existing Internet mail handling programs.  In particular,
 
95   some mail relaying programs are known to (a) delete some message
 
96   header fields while retaining others, (b) rearrange the order of
 
97   addresses in To or Cc fields, (c) rearrange the (vertical) order of
 
98   header fields, and/or (d) "wrap" message headers at different places
 
99   than those in the original message.  In addition, some mail reading
 
100   programs are known to have difficulty correctly parsing message
 
101   headers which, while legal according to RFC 822, make use of
 
102   backslash-quoting to "hide" special characters such as "<", ",", or
 
103   ":", or which exploit other infrequently-used features of that
 
106   While it is unfortunate that these programs do not correctly
 
107   interpret RFC 822 headers, to "break" these programs would cause
 
108   severe operational problems for the Internet mail system.  The
 
109   extensions described in this memo therefore do not rely on little-
 
110   used features of RFC 822.
 
114Moore                       Standards Track                     [Page 2]
 
116RFC 2047               Message Header Extensions           November 1996
 
119   Instead, certain sequences of "ordinary" printable ASCII characters
 
120   (known as "encoded-words") are reserved for use as encoded data.  The
 
121   syntax of encoded-words is such that they are unlikely to
 
122   "accidentally" appear as normal text in message headers.
 
123   Furthermore, the characters used in encoded-words are restricted to
 
124   those which do not have special meanings in the context in which the
 
125   encoded-word appears.
 
127   Generally, an "encoded-word" is a sequence of printable ASCII
 
128   characters that begins with "=?", ends with "?=", and has two "?"s in
 
129   between.  It specifies a character set and an encoding method, and
 
130   also includes the original text encoded as graphic ASCII characters,
 
131   according to the rules for that encoding method.
 
133   A mail composer that implements this specification will provide a
 
134   means of inputting non-ASCII text in header fields, but will
 
135   translate these fields (or appropriate portions of these fields) into
 
136   encoded-words before inserting them into the message header.
 
138   A mail reader that implements this specification will recognize
 
139   encoded-words when they appear in certain portions of the message
 
140   header.  Instead of displaying the encoded-word "as is", it will
 
141   reverse the encoding and display the original text in the designated
 
146   This memo relies heavily on notation and terms defined RFC 822 and
 
147   RFC 2045.  In particular, the syntax for the ABNF used in this memo
 
148   is defined in RFC 822, as well as many of the terminal or nonterminal
 
149   symbols from RFC 822 are used in the grammar for the header
 
150   extensions defined here.  Among the symbols defined in RFC 822 and
 
151   referenced in this memo are: 'addr-spec', 'atom', 'CHAR', 'comment',
 
152   'CTLs', 'ctext', 'linear-white-space', 'phrase', 'quoted-pair'.
 
153   'quoted-string', 'SPACE', and 'word'.  Successful implementation of
 
154   this protocol extension requires careful attention to the RFC 822
 
155   definitions of these terms.
 
157   When the term "ASCII" appears in this memo, it refers to the "7-Bit
 
158   American Standard Code for Information Interchange", ANSI X3.4-1986.
 
159   The MIME charset name for this character set is "US-ASCII".  When not
 
160   specifically referring to the MIME charset name, this document uses
 
161   the term "ASCII", both for brevity and for consistency with RFC 822.
 
162   However, implementors are warned that the character set name must be
 
163   spelled "US-ASCII" in MIME message and body part headers.
 
170Moore                       Standards Track                     [Page 3]
 
172RFC 2047               Message Header Extensions           November 1996
 
175   This memo specifies a protocol for the representation of non-ASCII
 
176   text in message headers.  It specifically DOES NOT define any
 
177   translation between "8-bit headers" and pure ASCII headers, nor is
 
178   any such translation assumed to be possible.
 
1802. Syntax of encoded-words
 
182   An 'encoded-word' is defined by the following ABNF grammar.  The
 
183   notation of RFC 822 is used, with the exception that white space
 
184   characters MUST NOT appear between components of an 'encoded-word'.
 
186   encoded-word = "=?" charset "?" encoding "?" encoded-text "?="
 
188   charset = token    ; see section 3
 
190   encoding = token   ; see section 4
 
192   token = 1*<Any CHAR except SPACE, CTLs, and especials>
 
194   especials = "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "
 
195               <"> / "/" / "[" / "]" / "?" / "." / "="
 
197   encoded-text = 1*<Any printable ASCII character other than "?"
 
199                  ; (but see "Use of encoded-words in message
 
200                  ; headers", section 5)
 
202   Both 'encoding' and 'charset' names are case-independent.  Thus the
 
203   charset name "ISO-8859-1" is equivalent to "iso-8859-1", and the
 
204   encoding named "Q" may be spelled either "Q" or "q".
 
206   An 'encoded-word' may not be more than 75 characters long, including
 
207   'charset', 'encoding', 'encoded-text', and delimiters.  If it is
 
208   desirable to encode more text than will fit in an 'encoded-word' of
 
209   75 characters, multiple 'encoded-word's (separated by CRLF SPACE) may
 
212   While there is no limit to the length of a multiple-line header
 
213   field, each line of a header field that contains one or more
 
214   'encoded-word's is limited to 76 characters.
 
216   The length restrictions are included both to ease interoperability
 
217   through internetwork mail gateways, and to impose a limit on the
 
218   amount of lookahead a header parser must employ (while looking for a
 
219   final ?= delimiter) before it can decide whether a token is an
 
220   "encoded-word" or something else.
 
226Moore                       Standards Track                     [Page 4]
 
228RFC 2047               Message Header Extensions           November 1996
 
231   IMPORTANT: 'encoded-word's are designed to be recognized as 'atom's
 
232   by an RFC 822 parser.  As a consequence, unencoded white space
 
233   characters (such as SPACE and HTAB) are FORBIDDEN within an
 
234   'encoded-word'.  For example, the character sequence
 
236      =?iso-8859-1?q?this is some text?=
 
238   would be parsed as four 'atom's, rather than as a single 'atom' (by
 
239   an RFC 822 parser) or 'encoded-word' (by a parser which understands
 
240   'encoded-words').  The correct way to encode the string "this is some
 
241   text" is to encode the SPACE characters as well, e.g.
 
243      =?iso-8859-1?q?this=20is=20some=20text?=
 
245   The characters which may appear in 'encoded-text' are further
 
246   restricted by the rules in section 5.
 
250   The 'charset' portion of an 'encoded-word' specifies the character
 
251   set associated with the unencoded text.  A 'charset' can be any of
 
252   the character set names allowed in an MIME "charset" parameter of a
 
253   "text/plain" body part, or any character set name registered with
 
254   IANA for use with the MIME text/plain content-type.
 
256   Some character sets use code-switching techniques to switch between
 
257   "ASCII mode" and other modes.  If unencoded text in an 'encoded-word'
 
258   contains a sequence which causes the charset interpreter to switch
 
259   out of ASCII mode, it MUST contain additional control codes such that
 
260   ASCII mode is again selected at the end of the 'encoded-word'.  (This
 
261   rule applies separately to each 'encoded-word', including adjacent
 
262   'encoded-word's within a single header field.)
 
264   When there is a possibility of using more than one character set to
 
265   represent the text in an 'encoded-word', and in the absence of
 
266   private agreements between sender and recipients of a message, it is
 
267   recommended that members of the ISO-8859-* series be used in
 
268   preference to other character sets.
 
272   Initially, the legal values for "encoding" are "Q" and "B".  These
 
273   encodings are described below.  The "Q" encoding is recommended for
 
274   use when most of the characters to be encoded are in the ASCII
 
275   character set; otherwise, the "B" encoding should be used.
 
276   Nevertheless, a mail reader which claims to recognize 'encoded-word's
 
277   MUST be able to accept either encoding for any character set which it
 
282Moore                       Standards Track                     [Page 5]
 
284RFC 2047               Message Header Extensions           November 1996
 
287   Only a subset of the printable ASCII characters may be used in
 
288   'encoded-text'.  Space and tab characters are not allowed, so that
 
289   the beginning and end of an 'encoded-word' are obvious.  The "?"
 
290   character is used within an 'encoded-word' to separate the various
 
291   portions of the 'encoded-word' from one another, and thus cannot
 
292   appear in the 'encoded-text' portion.  Other characters are also
 
293   illegal in certain contexts.  For example, an 'encoded-word' in a
 
294   'phrase' preceding an address in a From header field may not contain
 
295   any of the "specials" defined in RFC 822.  Finally, certain other
 
296   characters are disallowed in some contexts, to ensure reliability for
 
297   messages that pass through internetwork mail gateways.
 
299   The "B" encoding automatically meets these requirements.  The "Q"
 
300   encoding allows a wide range of printable characters to be used in
 
301   non-critical locations in the message header (e.g., Subject), with
 
302   fewer characters available for use in other locations.
 
306   The "B" encoding is identical to the "BASE64" encoding defined by RFC
 
311   The "Q" encoding is similar to the "Quoted-Printable" content-
 
312   transfer-encoding defined in RFC 2045.  It is designed to allow text
 
313   containing mostly ASCII characters to be decipherable on an ASCII
 
314   terminal without decoding.
 
316   (1) Any 8-bit value may be represented by a "=" followed by two
 
317       hexadecimal digits.  For example, if the character set in use
 
318       were ISO-8859-1, the "=" character would thus be encoded as
 
319       "=3D", and a SPACE by "=20".  (Upper case should be used for
 
320       hexadecimal digits "A" through "F".)
 
322   (2) The 8-bit hexadecimal value 20 (e.g., ISO-8859-1 SPACE) may be
 
323       represented as "_" (underscore, ASCII 95.).  (This character may
 
324       not pass through some internetwork mail gateways, but its use
 
325       will greatly enhance readability of "Q" encoded data with mail
 
326       readers that do not support this encoding.)  Note that the "_"
 
327       always represents hexadecimal 20, even if the SPACE character
 
328       occupies a different code position in the character set in use.
 
330   (3) 8-bit values which correspond to printable ASCII characters other
 
331       than "=", "?", and "_" (underscore), MAY be represented as those
 
332       characters.  (But see section 5 for restrictions.)  In
 
333       particular, SPACE and TAB MUST NOT be represented as themselves
 
334       within encoded words.
 
338Moore                       Standards Track                     [Page 6]
 
340RFC 2047               Message Header Extensions           November 1996
 
3435. Use of encoded-words in message headers
 
345   An 'encoded-word' may appear in a message header or body part header
 
346   according to the following rules:
 
348(1) An 'encoded-word' may replace a 'text' token (as defined by RFC 822)
 
349    in any Subject or Comments header field, any extension message
 
350    header field, or any MIME body part field for which the field body
 
351    is defined as '*text'.  An 'encoded-word' may also appear in any
 
352    user-defined ("X-") message or body part header field.
 
354    Ordinary ASCII text and 'encoded-word's may appear together in the
 
355    same header field.  However, an 'encoded-word' that appears in a
 
356    header field defined as '*text' MUST be separated from any adjacent
 
357    'encoded-word' or 'text' by 'linear-white-space'.
 
359(2) An 'encoded-word' may appear within a 'comment' delimited by "(" and
 
360    ")", i.e., wherever a 'ctext' is allowed.  More precisely, the RFC
 
361    822 ABNF definition for 'comment' is amended as follows:
 
363    comment = "(" *(ctext / quoted-pair / comment / encoded-word) ")"
 
365    A "Q"-encoded 'encoded-word' which appears in a 'comment' MUST NOT
 
366    contain the characters "(", ")" or "
 
367    'encoded-word' that appears in a 'comment' MUST be separated from
 
368    any adjacent 'encoded-word' or 'ctext' by 'linear-white-space'.
 
370    It is important to note that 'comment's are only recognized inside
 
371    "structured" field bodies.  In fields whose bodies are defined as
 
372    '*text', "(" and ")" are treated as ordinary characters rather than
 
373    comment delimiters, and rule (1) of this section applies.  (See RFC
 
374    822, sections 3.1.2 and 3.1.3)
 
376(3) As a replacement for a 'word' entity within a 'phrase', for example,
 
377    one that precedes an address in a From, To, or Cc header.  The ABNF
 
378    definition for 'phrase' from RFC 822 thus becomes:
 
380    phrase = 1*( encoded-word / word )
 
383    'encoded-word' is restricted to: <upper and lower case ASCII
 
384    letters, decimal digits, "!", "*", "+", "-", "/", "=", and "_"
 
385    (underscore, ASCII 95.)>.  An 'encoded-word' that appears within a
 
386    'phrase' MUST be separated from any adjacent 'word', 'text' or
 
387    'special' by 'linear-white-space'.
 
394Moore                       Standards Track                     [Page 7]
 
396RFC 2047               Message Header Extensions           November 1996
 
399   These are the ONLY locations where an 'encoded-word' may appear.  In
 
402   + An 'encoded-word' MUST NOT appear in any portion of an 'addr-spec'.
 
404   + An 'encoded-word' MUST NOT appear within a 'quoted-string'.
 
406   + An 'encoded-word' MUST NOT be used in a Received header field.
 
408   + An 'encoded-word' MUST NOT be used in parameter of a MIME
 
409     Content-Type or Content-Disposition field, or in any structured
 
410     field body except within a 'comment' or 'phrase'.
 
412   The 'encoded-text' in an 'encoded-word' must be self-contained;
 
413   'encoded-text' MUST NOT be continued from one 'encoded-word' to
 
414   another.  This implies that the 'encoded-text' portion of a "B"
 
415   'encoded-word' will be a multiple of 4 characters long; for a "Q"
 
416   'encoded-word', any "=" character that appears in the 'encoded-text'
 
417   portion will be followed by two hexadecimal characters.
 
419   Each 'encoded-word' MUST encode an integral number of octets.  The
 
420   'encoded-text' in each 'encoded-word' must be well-formed according
 
421   to the encoding specified; the 'encoded-text' may not be continued in
 
422   the next 'encoded-word'.  (For example, "=?charset?Q?=?=
 
423   =?charset?Q?AB?=" would be illegal, because the two hex digits "AB"
 
424   must follow the "=" in the same 'encoded-word'.)
 
426   Each 'encoded-word' MUST represent an integral number of characters.
 
427   A multi-octet character may not be split across adjacent 'encoded-
 
430   Only printable and white space character data should be encoded using
 
431   this scheme.  However, since these encoding schemes allow the
 
432   encoding of arbitrary octet values, mail readers that implement this
 
433   decoding should also ensure that display of the decoded data on the
 
434   recipient's terminal will not cause unwanted side-effects.
 
436   Use of these methods to encode non-textual data (e.g., pictures or
 
437   sounds) is not defined by this memo.  Use of 'encoded-word's to
 
438   represent strings of purely ASCII characters is allowed, but
 
439   discouraged.  In rare cases it may be necessary to encode ordinary
 
440   text that looks like an 'encoded-word'.
 
450Moore                       Standards Track                     [Page 8]
 
452RFC 2047               Message Header Extensions           November 1996
 
4556. Support of 'encoded-word's by mail readers
 
4576.1. Recognition of 'encoded-word's in message headers
 
459   A mail reader must parse the message and body part headers according
 
460   to the rules in RFC 822 to correctly recognize 'encoded-word's.
 
462   'encoded-word's are to be recognized as follows:
 
464   (1) Any message or body part header field defined as '*text', or any
 
465       user-defined header field, should be parsed as follows: Beginning
 
466       at the start of the field-body and immediately following each
 
467       occurrence of 'linear-white-space', each sequence of up to 75
 
468       printable characters (not containing any 'linear-white-space')
 
469       should be examined to see if it is an 'encoded-word' according to
 
470       the syntax rules in section 2.  Any other sequence of printable
 
471       characters should be treated as ordinary ASCII text.
 
473   (2) Any header field not defined as '*text' should be parsed
 
474       according to the syntax rules for that header field.  However,
 
475       any 'word' that appears within a 'phrase' should be treated as an
 
476       'encoded-word' if it meets the syntax rules in section 2.
 
477       Otherwise it should be treated as an ordinary 'word'.
 
479   (3) Within a 'comment', any sequence of up to 75 printable characters
 
480       (not containing 'linear-white-space'), that meets the syntax
 
481       rules in section 2, should be treated as an 'encoded-word'.
 
482       Otherwise it should be treated as normal comment text.
 
484   (4) A MIME-Version header field is NOT required to be present for
 
485       'encoded-word's to be interpreted according to this
 
486       specification.  One reason for this is that the mail reader is
 
487       not expected to parse the entire message header before displaying
 
488       lines that may contain 'encoded-word's.
 
4906.2. Display of 'encoded-word's
 
492   Any 'encoded-word's so recognized are decoded, and if possible, the
 
493   resulting unencoded text is displayed in the original character set.
 
495   NOTE: Decoding and display of encoded-words occurs *after* a
 
496   structured field body is parsed into tokens.  It is therefore
 
497   possible to hide 'special' characters in encoded-words which, when
 
498   displayed, will be indistinguishable from 'special' characters in the
 
499   surrounding text.  For this and other reasons, it is NOT generally
 
500   possible to translate a message header containing 'encoded-word's to
 
501   an unencoded form which can be parsed by an RFC 822 mail reader.
 
506Moore                       Standards Track                     [Page 9]
 
508RFC 2047               Message Header Extensions           November 1996
 
511   When displaying a particular header field that contains multiple
 
512   'encoded-word's, any 'linear-white-space' that separates a pair of
 
513   adjacent 'encoded-word's is ignored.  (This is to allow the use of
 
514   multiple 'encoded-word's to represent long strings of unencoded text,
 
515   without having to separate 'encoded-word's where spaces occur in the
 
518   In the event other encodings are defined in the future, and the mail
 
519   reader does not support the encoding used, it may either (a) display
 
520   the 'encoded-word' as ordinary text, or (b) substitute an appropriate
 
521   message indicating that the text could not be decoded.
 
523   If the mail reader does not support the character set used, it may
 
524   (a) display the 'encoded-word' as ordinary text (i.e., as it appears
 
525   in the header), (b) make a "best effort" to display using such
 
526   characters as are available, or (c) substitute an appropriate message
 
527   indicating that the decoded text could not be displayed.
 
529   If the character set being used employs code-switching techniques,
 
530   display of the encoded text implicitly begins in "ASCII mode".  In
 
531   addition, the mail reader must ensure that the output device is once
 
532   again in "ASCII mode" after the 'encoded-word' is displayed.
 
5346.3. Mail reader handling of incorrectly formed 'encoded-word's
 
536   It is possible that an 'encoded-word' that is legal according to the
 
537   syntax defined in section 2, is incorrectly formed according to the
 
538   rules for the encoding being used.   For example:
 
540   (1) An 'encoded-word' which contains characters which are not legal
 
541       for a particular encoding (for example, a "-" in the "B"
 
542       encoding, or a SPACE or HTAB in either the "B" or "Q" encoding),
 
543       is incorrectly formed.
 
545   (2) Any 'encoded-word' which encodes a non-integral number of
 
546       characters or octets is incorrectly formed.
 
548   A mail reader need not attempt to display the text associated with an
 
549   'encoded-word' that is incorrectly formed.  However, a mail reader
 
550   MUST NOT prevent the display or handling of a message because an
 
551   'encoded-word' is incorrectly formed.
 
555   A mail composing program claiming compliance with this specification
 
556   MUST ensure that any string of non-white-space printable ASCII
 
557   characters within a '*text' or '*ctext' that begins with "=?" and
 
558   ends with "?=" be a valid 'encoded-word'.  ("begins" means: at the
 
562Moore                       Standards Track                    [Page 10]
 
564RFC 2047               Message Header Extensions           November 1996
 
567   start of the field-body, immediately following 'linear-white-space',
 
568   or immediately following a "(" for an 'encoded-word' within '*ctext';
 
569   "ends" means: at the end of the field-body, immediately preceding
 
570   'linear-white-space', or immediately preceding a ")" for an
 
571   'encoded-word' within '*ctext'.)  In addition, any 'word' within a
 
572   'phrase' that begins with "=?" and ends with "?=" must be a valid
 
575   A mail reading program claiming compliance with this specification
 
576   must be able to distinguish 'encoded-word's from 'text', 'ctext', or
 
577   'word's, according to the rules in section 6, anytime they appear in
 
578   appropriate places in message headers.  It must support both the "B"
 
579   and "Q" encodings for any character set which it supports.  The
 
580   program must be able to display the unencoded text if the character
 
581   set is "US-ASCII".  For the ISO-8859-* character sets, the mail
 
582   reading program must at least be able to display the characters which
 
583   are also in the ASCII set.
 
587   The following are examples of message headers containing 'encoded-
 
590   From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>
 
591   To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>
 
592   CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>
 
593   Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
 
594    =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
 
596      Note: In the first 'encoded-word' of the Subject field above, the
 
597      last "=" at the end of the 'encoded-text' is necessary because each
 
598      'encoded-word' must be self-contained (the "=" character completes a
 
599      group of 4 base64 characters representing 2 octets).  An additional
 
600      octet could have been encoded in the first 'encoded-word' (so that
 
601      the encoded-word would contain an exact multiple of 3 encoded
 
602      octets), except that the second 'encoded-word' uses a different
 
603      'charset' than the first one.
 
605   From: =?ISO-8859-1?Q?Olle_J=E4rnefors?= <ojarnef@admin.kth.se>
 
606   To: ietf-822@dimacs.rutgers.edu, ojarnef@admin.kth.se
 
607   Subject: Time for ISO 10646?
 
609   To: Dave Crocker <dcrocker@mordor.stanford.edu>
 
610   Cc: ietf-822@dimacs.rutgers.edu, paf@comsol.se
 
611   From: =?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= <paf@nada.kth.se>
 
612   Subject: Re: RFC-HDR care and feeding
 
618Moore                       Standards Track                    [Page 11]
 
620RFC 2047               Message Header Extensions           November 1996
 
623   From: Nathaniel Borenstein <nsb@thumper.bellcore.com>
 
624         (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)
 
625   To: Greg Vaudreuil <gvaudre@NRI.Reston.VA.US>, Ned Freed
 
626      <ned@innosoft.com>, Keith Moore <moore@cs.utk.edu>
 
627   Subject: Test of new header generator
 
629   Content-type: text/plain; charset=ISO-8859-1
 
631   The following examples illustrate how text containing 'encoded-word's
 
632   which appear in a structured field body.  The rules are slightly
 
633   different for fields defined as '*text' because "(" and ")" are not
 
634   recognized as 'comment' delimiters.  [Section 5, paragraph (1)].
 
636   In each of the following examples, if the same sequence were to occur
 
637   in a '*text' field, the "displayed as" form would NOT be treated as
 
638   encoded words, but be identical to the "encoded form".  This is
 
639   because each of the encoded-words in the following examples is
 
640   adjacent to a "(" or ")" character.
 
642   encoded form                                displayed as
 
643   ---------------------------------------------------------------------
 
644   (=?ISO-8859-1?Q?a?=)                        (a)
 
646   (=?ISO-8859-1?Q?a?= b)                      (a b)
 
648           Within a 'comment', white space MUST appear between an
 
649           'encoded-word' and surrounding text.  [Section 5,
 
650           paragraph (2)].  However, white space is not needed between
 
651           the initial "(" that begins the 'comment', and the
 
655   (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)     (ab)
 
657           White space between adjacent 'encoded-word's is not
 
660   (=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)    (ab)
 
662        Even multiple SPACEs between 'encoded-word's are ignored
 
663        for the purpose of display.
 
665   (=?ISO-8859-1?Q?a?=                         (ab)
 
668           Any amount of linear-space-white between 'encoded-word's,
 
669           even if it includes a CRLF followed by one or more SPACEs,
 
670           is ignored for the purposes of display.
 
674Moore                       Standards Track                    [Page 12]
 
676RFC 2047               Message Header Extensions           November 1996
 
679   (=?ISO-8859-1?Q?a_b?=)                      (a b)
 
681           In order to cause a SPACE to be displayed within a portion
 
682           of encoded text, the SPACE MUST be encoded as part of the
 
685   (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)    (a b)
 
687           In order to cause a SPACE to be displayed between two strings
 
688           of encoded text, the SPACE MAY be encoded as part of one of
 
693   [RFC 822] Crocker, D., "Standard for the Format of ARPA Internet Text
 
694       Messages", STD 11, RFC 822, UDEL, August 1982.
 
696   [RFC 2049] Borenstein, N., and N. Freed, "Multipurpose Internet Mail
 
697       Extensions (MIME) Part Five: Conformance Criteria and Examples",
 
698       RFC 2049, November 1996.
 
700   [RFC 2045] Borenstein, N., and N. Freed, "Multipurpose Internet Mail
 
701       Extensions (MIME) Part One: Format of Internet Message Bodies",
 
702       RFC 2045, November 1996.
 
704   [RFC 2046] Borenstein N., and N. Freed, "Multipurpose Internet Mail
 
705       Extensions (MIME) Part Two: Media Types", RFC 2046,
 
708   [RFC 2048] Freed, N., Klensin, J., and J. Postel, "Multipurpose
 
709       Internet Mail Extensions (MIME) Part Four: Registration
 
710       Procedures", RFC 2048, November 1996.
 
730Moore                       Standards Track                    [Page 13]
 
732RFC 2047               Message Header Extensions           November 1996
 
73510. Security Considerations
 
737   Security issues are not discussed in this memo.
 
741   The author wishes to thank Nathaniel Borenstein, Issac Chan, Lutz
 
742   Donnerhacke, Paul Eggert, Ned Freed, Andreas M. Kirchwitz, Olle
 
743   Jarnefors, Mike Rosin, Yutaka Sato, Bart Schaefer, and Kazuhiko
 
744   Yamamoto, for their helpful advice, insightful comments, and
 
745   illuminating questions in response to earlier versions of this
 
751   University of Tennessee
 
753   Knoxville TN 37996-1301
 
755   EMail: moore@cs.utk.edu
 
786Moore                       Standards Track                    [Page 14]
 
788RFC 2047               Message Header Extensions           November 1996
 
791Appendix - changes since RFC 1522 (in no particular order)
 
793   + explicitly state that the MIME-Version is not requried to use
 
796   + add explicit note that SPACEs and TABs are not allowed within
 
797     'encoded-word's, explaining that an 'encoded-word' must look like an
 
798     'atom' to an RFC822 parser.values, to be precise).
 
800   + add examples from Olle Jarnefors (thanks!) which illustrate how
 
801     encoded-words with adjacent linear-white-space are displayed.
 
803   + explicitly list terms defined in RFC822 and referenced in this memo
 
805   + fix transcription typos that caused one or two lines and a couple of
 
806     characters to disappear in the resulting text, due to nroff quirks.
 
808   + clarify that encoded-words are allowed in '*text' fields in both
 
809     RFC822 headers and MIME body part headers, but NOT as parameter
 
812   + clarify the requirement to switch back to ASCII within the encoded
 
813     portion of an 'encoded-word', for any charset that uses code switching
 
816   + add a note about 'encoded-word's being delimited by "(" and ")"
 
817     within a comment, but not in a *text (how bizarre!).
 
819   + fix the Andre Pirard example to get rid of the trailing "_" after
 
820     the =E9.  (no longer needed post-1342).
 
822   + clarification: an 'encoded-word' may appear immediately following
 
823     the initial "(" or immediately before the final ")" that delimits a
 
824     comment, not just adjacent to "(" and ")" *within* *ctext.
 
826   + add a note to explain that a "B" 'encoded-word' will always have a
 
827     multiple of 4 characters in the 'encoded-text' portion.
 
829   + add note about the "=" in the examples
 
831   + note that processing of 'encoded-word's occurs *after* parsing, and
 
832     some of the implications thereof.
 
834   + explicitly state that you can't expect to translate between
 
835     1522 and either vanilla 822 or so-called "8-bit headers".
 
837   + explicitly state that 'encoded-word's are not valid within a
 
842Moore                       Standards Track                    [Page 15]