<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-dispatch-modern-network-unicode-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="Modern Network Unicode">Modern Network Unicode</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-dispatch-modern-network-unicode-03"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2023" month="August" day="31"/>
    <area>Applications</area>
    <workgroup>DISPATCH Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 79?>

<t>BCP18 (RFC 2277) has been the basis for the handling of
character-shaped data in IETF specifications for more than a quarter
of a century now.
It singles out UTF-8 (STD63, RFC 3629) as the "charset" that <bcp14>MUST</bcp14> be
supported, and pulls in the Unicode standard with that.</t>
      <t>Based on this, RFC 5198 both defines common conventions for the use of
Unicode in network protocols and caters for the specific requirements
of the legacy protocol Telnet.
In applications that do not need Telnet compatibility, some of the
decisions of RFC 5198 can be cumbersome.</t>
      <t>The present specification defines "Modern Network Unicode" (MNU),
which is a form of RFC 5198 Network Unicode that can be used in
specifications that require the exchange of plain text over networks
and where just mandating UTF-8 may not be sufficient, but
there is also no desire to import all of the baggage of RFC 5198.</t>
      <t>As characters are used in different environments, MNU is defined in a
one-dimensional (1D) variant that is useful for identifiers and
labels, but does not use a structure of lines.
A 2D variant is defined for text that is a sequence of text lines,
such as plain text documents or markdown format.
Additional variances of these two base formats can be used to tailor
MNU to specific areas of application.</t>
    </abstract>
    <note>
      <name>Status</name>
      <?line 107?>

<t>The present version of this document represents the author's reaction
to initial exposure on the art@ietf.org mailing list.  Some more
editorial cleanup is probably desirable, but could not be achieved in
time for the IETF105 Internet-Draft deadline.</t>
    </note>
  </front>
  <middle>
    <?line 114?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>(Insert embellished copy of abstract here.)</t>
      <!-- And perhaps a few examples of modern/current specs where these
considerations are very relevant would help readers to evaluate if
they should take this stuff into account in their specs may help too
-->

<t>Complex specifications that use Unicode often come with detailed
information on their Unicode usage; this level of detail generally is
necessary to support some legacy applications.  New, simple protocol
specifications generally do not have such a legacy or need such
details, but can instead simply use common practice, informed by
decades of using Unicode.  The present specification attempts to serve
as a convenient reference for such protocol specifications, reducing
their need for discussing Unicode to just pointing to the present
specification and making a few simple choices.</t>
      <t>There is no intention that henceforth all new protocols "must" use the
present specification.  It is offered as a standards-track
specification simply so it can be normatively referenced from other
standards-track specifications.</t>
      <section anchor="conventions">
        <name>Conventions</name>
        <t>Characters in this specification are named with their Unicode name
notated in the usual form U+NNNN (where NNNN is a
four-to-six-digit upper case hexadecimal number giving the Unicode scalar
value), or with their ASCII names (such as CR, LF, HT, RS, NUL)
<xref target="STD80"/>.</t>
        <aside>
          <t>See <xref target="RFC5137"/> for a more detailed discussion of ways to refer in ASCII to
Unicode characters (as well as to code points and code units in various
transformation formats).</t>
        </aside>
        <t>The following definitions apply:</t>
        <dl>
          <dt>Byte:</dt>
          <dd>
            <t>8-bit unit of information interchange, synonym for octet.</t>
          </dd>
        </dl>
        <t>Please see <xref target="terminology"/> for some more detailed term definitions that
may be helpful to relate this specification with the Unicode Standard;
please do read its first paragraph if the definitions in this section
seem inadequate.</t>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="mnu1d">
      <name>1D Modern Network Unicode</name>
      <t>One-dimensional Modern Network Unicode (1D MNU) is the form of Modern
Network Unicode that can be used for one-dimensional text, i.e., text
without a structure of separate text lines.
It requires conformance to <xref target="STD63"/>, as well as to the following
four mandates:</t>
      <ol spacing="normal" type="1"><li>Control codes (U+0000 to U+001F and U+007F to U+009F) <bcp14>MUST NOT</bcp14>
  be used.  (Note that this also excludes line endings, so a 1D MNU text
  string cannot extend beyond a single line.  See <xref target="mnu2d"/>
  below if line structure is needed.)</li>
        <li>The characters U+2028 and U+2029 <bcp14>MUST NOT</bcp14> be used.  (In case future
  Unicode versions add to the Unicode character categories Zl or Zp,
  any characters in these categories <bcp14>MUST NOT</bcp14> be used.)</li>
        <li>Modern Network Unicode strongly RECOMMENDS that, except in unusual
  circumstances (see <xref target="normalization"/>), all text is transmitted in
  normalization form NFC.  This mandate should not be
  realized by routinely normalizing all text, but by encouraging text
  sources to use NFC if applicable.</li>
        <li>As per the Unicode specification, the code points U+FFFE and U+FFFF
  <bcp14>MUST NOT</bcp14> be used.  Also, Byte Order Marks (leading U+FEFF
  characters) <bcp14>MUST NOT</bcp14> be used.</li>
      </ol>
      <t>Note that several control codes have been in use historically in ASCII
documents even within a single text line.
For instance BS (U+0008) and CR (U+000D) have been used as a crude way
to combine (by overtyping) characters; the present specification does not
explicitly support this behavior anymore.
HT (U+0009, "TAB") has been used for a form of compressing stretches
of blank space; by keeping its actual definition open it has also been
used to enable users of text to specify variable blank space
("indentation").
The present specification RECOMMENDS not using a variance for 1D MNU
to enable using BS, HT, or CR; legacy usage of HT may be more
appropriate in certain forms of 2D text.</t>
    </section>
    <section anchor="mnu2d">
      <name>2D Modern Network Unicode</name>
      <t>Two-dimensional Modern Network Unicode (2D MNU) enhances 1D MNU by
structuring the text into lines.
2D MNU does this is by using the control code LF (U+000A) for a line
terminator.
The use of an unterminated last line is permitted, but not encouraged.
(This is not a variance.)</t>
      <t>Historically, the Internet NVT <xref target="RFC0854"/> and thus, much later, Network
Unicode <xref target="RFC5198"/> have used the combination CR+LF as a line
terminator, reflecting its heritage based on teletype functionality.
The use of U+000D mostly introduces additional ways to create
interoperability problems.
<xref target="XML"/> goes to great lengths to reduce the harm the presence of CR
characters does to interchange of XML documents.
Pages 10 and 11 of <xref target="RFC0764"/> discuss how CR can actually only be
used in the combinations CR+NUL and CR+LF.
2D MNU simply elides the CR.</t>
      <t>In other words, 2D MNU adds the use of line endings, represented by a
single LF character (which is then the only control character
allowed).  Variances are available for (1) allowing or even (2)
requiring the use of CR before LF.</t>
    </section>
    <section anchor="d">
      <name>3D?</name>
      <t>Three-dimensional forms of text have been used, e.g., by using U+000C
FF ("form feed") to add a page structure to the RFC format <xref target="RFC2223"/>,
or by using U+001E RS ("record separator") to separate several (2D) JSON
texts in a JSON sequence <xref target="RFC7464"/>.</t>
      <t>As the need for this form of structure is now mostly being addressed by
building data structures around text items, the present specification
does not define a 3D MNU.
If needed, variances such as the use of FF or RS can be described in
the documents specifying the 3D format.</t>
    </section>
    <section anchor="variances">
      <name>Variances</name>
      <t>In addition to the basic 1D and 2D versions of MNU, this specification
describes a number of variances that can be used in the forms such as
"2D Modern Network Unicode with VVV", or "2D Modern Network Unicode
with VVV, WWW, and ZZZ" for multiple variances used.  Specifications
that cannot directly use the basic MNU forms may be able to use MNU
with one or more of these variances added.</t>
      <t>An example for the usage of variances: Up to RFC 8649, RFCs were
formatted in "2D Modern Network Unicode with CR-tolerant lines and FF
characters", or exceptionally <xref target="RFC8265"/>, "2D Modern Network Unicode with
CR-tolerant lines and FF characters and BOM".</t>
      <section anchor="with-cr-tolerant-lines">
        <name>With CR-tolerant lines</name>
        <t>The variance "with CR-tolerant lines" allows the sequence CR LF as
well as a single LF character as a line ending.  This may enable
existing texts to be used as MNU without processing at the sender side
(substituting that by processing at the receiver side).  Note that,
with this variance, a CR character cannot be used anywhere else but
immediately preceding an LF character.</t>
      </section>
      <section anchor="with-cr-lf">
        <name>With CR-LF</name>
        <t>The variance "with CR-LF lines" requires the sequence CR LF as a line
ending; a single LF character is not allowed.  This is appropriate for
certain existing environments that have already made that
determination.</t>
      </section>
      <section anchor="with-line-or-paragraph-separators">
        <name>With Line or Paragraph Separators</name>
        <t>For 2D applications, and even for 1D applications that need to address
text in 2D forms, it may be useful to enable the use of U+2028 and
U+2029; this should be explicitly called out.</t>
      </section>
      <section anchor="with-ht-characters">
        <name>With HT Characters</name>
        <t>In some cases, the use of HT characters ("TABs") cannot be completely excluded.
The variance "with HT characters" allows their use, without attempting
to define their meaning (e.g., equivalence with spaces, column definitions, etc.).</t>
      </section>
      <section anchor="with-ccc-characters">
        <name>With CCC Characters</name>
        <t>Some applications of MNU may need to add specific control characters,
such as RS <xref target="RFC7464"/> or FF characters <xref target="RFC2223"/>.  This variance is spelled
with the ASCII name of the control character for CCC, e.g., "with RS
characters".</t>
      </section>
      <section anchor="with-nfc">
        <name>With NFC</name>
        <t>This variance turns the encouragement of using NFC normalization form
into a requirement.
Please see <xref target="normalization"/> for why this should be an exceptional case.</t>
      </section>
      <section anchor="with-nfkc">
        <name>With NFKC</name>
        <t>Some applications require a stronger form of normalization than NFC.
The variance "with NFKC" swaps out NFC and uses NFKC instead.
This is probably best used in conjunction with "with Unicode version NNN".</t>
      </section>
      <section anchor="version">
        <name>With Unicode Version NNN</name>
        <t>Some applications need to be sure that a certain Unicode version is
used.
The variance "with Unicode version NNN" (where NNN is a Unicode
version number) defines the Unicode version in use as NNN.
Also, it requires that only characters assigned in that Unicode
version are being used.</t>
        <t>See <xref section="4" sectionFormat="of" target="RFC5198"/> for more discussion of Unicode versions.</t>
      </section>
      <section anchor="with-bom">
        <name>With BOM</name>
        <t>In some environments, UTF-8 files need to be distinguished from files
in other formats, and one convention that has been used in certain
environments was to prepend a "Byte Order Mark" (U+FEFF) as a
distinguishing mark (as UTF-8 is not influenced by different byte
orders, this mark does not serve a purpose in UTF-8).
Sometimes these BOMs are included for interchange to ensure local
copies of the file include the distinguishing mark.
This variance enables this usage.</t>
      </section>
    </section>
    <section anchor="using-abnf-with-unicode">
      <name>Using ABNF with Unicode</name>
      <t>Internet STD 68, <xref target="STD68"/>, defines Augmented BNF for Syntax
Specifications: ABNF.  Since the late 1970s, ABNF has often been used
to formally describe the pieces of text that are meant to be used in
an Internet protocol.  ABNF was developed at a time when character
coding grew more and more complicated, and even in its current form, discusses
encoding of characters only briefly (<xref section="2.4" sectionFormat="of" target="STD68"/>).
This discussion offers no information about how this should be used today (it
actually still refers to 16-bit Unicode!).</t>
      <t>The best current practice of using ABNF for Unicode-based protocols is
as follows: ABNF is used as a grammar for describing sequences of
Unicode code points, valued from 0x0 to 0x10FFFF.  The actual encoding
(as UTF-8) is never seen on the ABNF level; see Section 9.4 of
<xref target="RFC6020"/> for a recent example of this.
Approaches such as representing the rules of UTF-8 encoding in ABNF
(see <xref section="3.5" sectionFormat="of" target="RFC5255"/> for an example) add complexity without
benefit and are <bcp14>NOT RECOMMENDED</bcp14>.</t>
      <t>ABNF features such as case-insensitivity in literal text strings
essentially do not work for general Unicode; text string literals
therefore (and by the definition in Section 2.3 of <xref target="STD68"/>) are
limited to ASCII characters.  That is often not actually a problem in
text-based protocol definitions.  Still, characters beyond ASCII need
to be allowed in many productions.  ABNF does not have access to
Unicode character categories and thus will be limited in its
expressiveness here.  The core rules defines in Appendix B of
<xref target="STD68"/> are limited to ASCII as well; new rules will therefore need
to be defined in any protocol employing modern Unicode.</t>
      <t>The present specification recommends defining ABNF rules as in these
examples:</t>
      <sourcecode type="ABNF"><![CDATA[
; 1D modern unicode character:
uchar = %x20-7E ; exclude C0
      / %xA0-2027 ; exclude DEL, C1
      / %x202A-D7FF ; exclude U+2028/2029
      / %xE000-FFFD ; exclude U+FFFE/FFFF
      / %x10000-10FFFD ; could exclude more non-characters

; 2D modern unicode with lines -- newline:
unl = %x0A
u2dchar = unl / uchar
; alternatively, CR-tolerant newline:
ucrnl = [%x0D] %x0A
u2dcrchar = ucrnl / uchar

; if really needed, HT-tolerant 1D unicode character:
utchar = %x09 / uchar
]]></sourcecode>
    </section>
    <section anchor="iana-considerations">
      <name>IANA considerations</name>
      <t>This specification places no requirements on IANA.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>The security considerations of <xref target="RFC5198"/> apply.</t>
      <t>A variance "with NUL characters" would create specific security
considerations as discussed in the security considerations of
<xref target="RFC5198"/> and should therefore only be used in circumstances that
absolutely do require it.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="STD80">
          <front>
            <title>ASCII format for network interchange</title>
            <author fullname="V.G. Cerf" initials="V.G." surname="Cerf"/>
            <date month="October" year="1969"/>
          </front>
          <seriesInfo name="STD" value="80"/>
          <seriesInfo name="RFC" value="20"/>
          <seriesInfo name="DOI" value="10.17487/RFC0020"/>
        </reference>
        <reference anchor="BCP18">
          <front>
            <title>IETF Policy on Character Sets and Languages</title>
            <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
            <date month="January" year="1998"/>
            <abstract>
              <t>This document is the current policies being applied by the Internet Engineering Steering Group (IESG) towards the standardization efforts in the Internet Engineering Task Force (IETF) in order to help Internet protocols fulfill these requirements. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="18"/>
          <seriesInfo name="RFC" value="2277"/>
          <seriesInfo name="DOI" value="10.17487/RFC2277"/>
        </reference>
        <reference anchor="STD63">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
        <reference anchor="STD68">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8265">
          <front>
            <title>Preparation, Enforcement, and Comparison of Internationalized Strings Representing Usernames and Passwords</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This document describes updated methods for handling Unicode strings representing usernames and passwords. The previous approach was known as SASLprep (RFC 4013) and was based on Stringprep (RFC 3454). The methods specified in this document provide a more sustainable approach to the handling of internationalized usernames and passwords. This document obsoletes RFC 7613.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8265"/>
          <seriesInfo name="DOI" value="10.17487/RFC8265"/>
        </reference>
        <reference anchor="RFC2223">
          <front>
            <title>Instructions to RFC Authors</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <author fullname="J. Reynolds" initials="J." surname="Reynolds"/>
            <date month="October" year="1997"/>
            <abstract>
              <t>This Request for Comments (RFC) provides information about the preparation of RFCs, and certain policies relating to the publication of RFCs. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2223"/>
          <seriesInfo name="DOI" value="10.17487/RFC2223"/>
        </reference>
        <reference anchor="RFC7464">
          <front>
            <title>JavaScript Object Notation (JSON) Text Sequences</title>
            <author fullname="N. Williams" initials="N." surname="Williams"/>
            <date month="February" year="2015"/>
            <abstract>
              <t>This document describes the JavaScript Object Notation (JSON) text sequence format and associated media type "application/json-seq". A JSON text sequence consists of any number of JSON texts, all encoded in UTF-8, each prefixed by an ASCII Record Separator (0x1E), and each ending with an ASCII Line Feed character (0x0A).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7464"/>
          <seriesInfo name="DOI" value="10.17487/RFC7464"/>
        </reference>
        <reference anchor="RFC5137">
          <front>
            <title>ASCII Escaping of Unicode Characters</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="February" year="2008"/>
            <abstract>
              <t>There are a number of circumstances in which an escape mechanism is needed in conjunction with a protocol to encode characters that cannot be represented or transmitted directly. With ASCII coding, the traditional escape has been either the decimal or hexadecimal numeric value of the character, written in a variety of different ways. The move to Unicode, where characters occupy two or more octets and may be coded in several different forms, has further complicated the question of escapes. This document discusses some options now in use and discusses considerations for selecting one for use in new IETF protocols, and protocols that are now being internationalized. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="137"/>
          <seriesInfo name="RFC" value="5137"/>
          <seriesInfo name="DOI" value="10.17487/RFC5137"/>
        </reference>
        <reference anchor="RFC0764">
          <front>
            <title>Telnet Protocol specification</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="June" year="1980"/>
          </front>
          <seriesInfo name="RFC" value="764"/>
          <seriesInfo name="DOI" value="10.17487/RFC0764"/>
        </reference>
        <reference anchor="RFC0854">
          <front>
            <title>Telnet Protocol Specification</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <author fullname="J.K. Reynolds" initials="J.K." surname="Reynolds"/>
            <date month="May" year="1983"/>
            <abstract>
              <t>This is the specification of the Telnet protocol used for remote terminal access in the ARPA Internet. The purpose of the TELNET Protocol is to provide a fairly general, bi-directional, eight-bit byte oriented communications facility. Its primary goal is to allow a standard method of interfacing terminal devices and terminal-oriented processes to each other. It is envisioned that the protocol may also be used for terminal-terminal communication ("linking") and process-process communication (distributed computation). This RFC specifies a standard for the ARPA Internet community. Hosts on the ARPA Internet are expected to adopt and implement this standard. Obsoletes NIC 18639.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="8"/>
          <seriesInfo name="RFC" value="854"/>
          <seriesInfo name="DOI" value="10.17487/RFC0854"/>
        </reference>
        <reference anchor="RFC5198">
          <front>
            <title>Unicode Format for Network Interchange</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="M. Padlipsky" initials="M." surname="Padlipsky"/>
            <date month="March" year="2008"/>
            <abstract>
              <t>The Internet today is in need of a standardized form for the transmission of internationalized "text" information, paralleling the specifications for the use of ASCII that date from the early days of the ARPANET. This document specifies that format, using UTF-8 with normalization and specific line-ending sequences. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5198"/>
          <seriesInfo name="DOI" value="10.17487/RFC5198"/>
        </reference>
        <reference anchor="UNICODE" target="https://www.unicode.org/versions/Unicode15.0.0/UnicodeStandard-15.0.pdf">
          <front>
            <title>The Unicode® Standard: Version 15.0 — Core Specification</title>
            <author>
              <organization>The Unicode Consortium</organization>
            </author>
            <date year="2022" month="September"/>
          </front>
          <annotation>For convenience, this bibliography entry points to what was the most recent version of Unicode at the time of writing. It is, however, intended to be a generic reference to the most recent version of Unicode, which always can be found at <eref target="http://www.unicode.org/versions/latest/">http://www.unicode.org/versions/latest/</eref>.</annotation>
        </reference>
        <reference anchor="XML" target="http://www.w3.org/TR/2008/REC-xml-20081126/">
          <front>
            <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>
            <author initials="T." surname="Bray" fullname="Tim Bray">
              <organization/>
            </author>
            <author initials="J." surname="Paoli" fullname="Jean Paoli">
              <organization/>
            </author>
            <author initials="C.M." surname="Sperberg-McQueen" fullname="C.M. Sperberg-McQueen">
              <organization/>
            </author>
            <author initials="E." surname="Maler" fullname="Eve Maler">
              <organization/>
            </author>
            <author initials="F." surname="Yergeau" fullname="François Yergeau">
              <organization/>
            </author>
            <date year="2008" month="November"/>
          </front>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC5255">
          <front>
            <title>Internet Message Access Protocol Internationalization</title>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen"/>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="June" year="2008"/>
            <abstract>
              <t>Internet Message Access Protocol (IMAP) version 4rev1 has basic support for non-ASCII characters in mailbox names and search substrings. It also supports non-ASCII message headers and content encoded as specified by Multipurpose Internet Mail Extensions (MIME). This specification defines a collection of IMAP extensions that improve international support including language negotiation for international error text, translations for namespace prefixes, and comparator negotiation for search, sort, and thread. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5255"/>
          <seriesInfo name="DOI" value="10.17487/RFC5255"/>
        </reference>
      </references>
    </references>
    <?line 413?>

<section anchor="terminology">
      <name>Terminology</name>
      <t>In order for the main body of this specification to stay readable for
its target audience, we banish what could be considered excessive
detail into appendices.
Expert readers who know a lot more about Coded Character Sets and
Unicode than the target audience is likely interested in are requested
to hold back the urge to request re-introduction of excessive detail
into the main body.
For instance, this specification has a local definition of "Unicode
character" that is useful for protocol designers, but is not actually
defined by the Unicode consortium; the details are here.</t>
      <t>Some definitions below reference definitions given in the Unicode
standard and are simplified from those, which see if the full detail
is needed.</t>
      <dl>
        <dt>Grapheme:</dt>
        <dd>
          <t>The smallest functional unit of a writing system.  For computer
representation, graphemes are represented by <em>characters</em>, sometimes
a single character, sometimes decomposed into multiple characters.
In visible presentation, graphemes are made visible as <em>glyphs</em>;
for computer use, glyphs are collected into <em>typefaces</em> (fonts).
The term grapheme is used to abstract from the specific glyph used —
a specific glyph from a typeface may be considered one of several
<em>allographs</em> for a grapheme.</t>
        </dd>
        <dt>Character:</dt>
        <dd>
          <t>Only defined as "abstract character" in <xref target="UNICODE"/>:
A unit of information used for the organization, control, or
representation of textual data (definition D7).
Most characters are used to stand for graphemes or to build
graphemes out of several characters.
Characters are usually used in ordered sequences, which are referred
to as "character strings".</t>
        </dd>
        <dt>Character set, Coded Character Set:</dt>
        <dd>
          <t>A mapping from code points to characters.
Note that the shorter form term "character set" is easily
misunderstood for a set of characters, which are called "character repertoire"</t>
        </dd>
        <dt>Character repertoire:</dt>
        <dd>
          <t>A set of characters, in the sense of what is available as characters
to choose from.</t>
        </dd>
        <dt>Code point:</dt>
        <dd>
          <t>The (usually numeric) value used in a coded character set to refer
to a character.
Note that code points may undergo some encoding before interchange,
see Unicode transformation format below.
Code points can also be allocated to refer to internal constructs of
a Unicode transformation format instead of referring to characters.
</t>
          <t>Unicode uses unsigned numbers between 0 and 1114111 (0x10FFFF) as
code points.</t>
        </dd>
        <dt>Unicode transformation format (UTF):</dt>
        <dd>
          <t>Character (and character strings) usually are interchanged as a
sequence of bytes.
A Unicode Transformation Format or Unicode Encoding Scheme specifies
a byte serialization for a Unicode encoding form.
(See definition D94 in Section 3.10, Unicode Encoding Schemes.)</t>
        </dd>
        <dt>Code unit:</dt>
        <dd>
          <t>A bit combination used for encoding text for processing or interchange.
The Unicode Standard uses 8-bit code units in the UTF-8 encoding
form, 16-bit code units in the UTF-16 encoding form, and 32-bit code
units in the UTF-32 encoding form.
(See Definition D77 in Section 3.9, Unicode Encoding Forms.)</t>
        </dd>
        <dt>Unicode scalar value:</dt>
        <dd>
          <t>Unicode code points except high-surrogate and low-surrogate code
points (see <xref target="Legacy"/>).
In other words, the ranges of integers 0 to 0xD7FF and 0xE000 to
0x10FFFF16 inclusive.
(See Definition D76 in Section 3.9, Unicode
Encoding Forms.)</t>
        </dd>
        <dt>Unicode Character:</dt>
        <dd>
          <t>For the purposes of the present specification, we use "Unicode
Character" as a synonym for "Unicode scalar value".
Note that this term includes Unicode scalar values that are not
Assigned Characters; for the purposes of a specification using the
present document, it is rarely useful to make this distinction, as
Unicode evolves and could assign characters not assigned.</t>
        </dd>
      </dl>
    </section>
    <section anchor="Legacy">
      <name>History, Legacy</name>
      <t>Some of the complexity of using Unicode is, unsurprisingly, rooted in
its long history of development.</t>
      <t>Unicode originally was introduced around 1988 as a 16-bit character
standard.
By the early 1990s, a specification had been published, and a number
of environments eagerly picked up Unicode.
Unicode characters were represented as 16-bit values (UCS-2), enabling
a simple character model using these uniformly 16-bit values as the
characters.
Programming language environments such as those of Java, JavaScript
and C# are now intimately entangled with this character model.</t>
      <t>In the mid-1990s, it became clear that 16 bits would not suffice.
Unicode underwent an extension to 31 bits, and then back to ~ 21 bits
(0 to 0x10FFFF).
For the 16-bit environments, this was realized by switching to UTF-16,
a "Unicode transformation format" (UTF-16).
This reassigned some of the 16-bit code points not for characters, but
for 2 sets of 1024 "surrogates" that would be used in pairs to
represent characters that do not fit into 16 bits, each supplying 10
bits to together add 2<sup>20</sup> code points to the 2<sup>16</sup>
already available (this leads to the surprising upper limit of
0x10FFFF).</t>
      <t>In parallel, UTF-8 was created as an ASCII-compatible form of Unicode
representation that would become the dominant form of text in the Web
and other interchange environments.</t>
      <t>The UCS-2 based character models of the legacy 16-bit platforms in
many cases couldn't be updated for fully embracing UTF-16 right away.
For instance, only much later did ECMAScript introduce the "u"
(Unicode) flag for regular expressions to have them actually match
"Unicode" characters.
So, on these platforms, UTF-16 is handled in a UCS-2 character
model, and sometimes orphaned surrogates leak out instead of Unicode
characters as "code points" in interfaces that are not meant to impose
these implementation limitations on the outside world.</t>
      <t>UTF-8 is unaffected by this UTF-16 quirk and of course doesn't support
encoding surrogates.
(UTF-8 is careful to allow a single representation only for each
Unicode character, and enabling the alternative use of surrogate pairs
would violate that invariant, while isolated surrogates don't mean
anything in Unicode.)</t>
      <t>Newly designed IETF protocols typically do not have to consider these
problems, but occasionally there are attempts to include isolated
surrogate code points into what we call Unicode characters here.</t>
    </section>
    <section anchor="normalization">
      <name>Normalization</name>
      <t>Please see <xref section="3" sectionFormat="of" target="RFC5198"/> for a brief introduction to Unicode
normalization and Normalization Form C (NFC).
However, since that section was written, additional experience with
normalization has led to the realization that the Unicode
normalization rules do not always preserve certain details in certain
writing systems.</t>
      <t>Therefore, the implementation approach of routinely normalizing all
text before interchange has fallen out of favor.
Instead, implementations are encouraged to use text sources that
already generally use NFC except where normalization would have been harmful.
Where two text strings needs to be compared, it may be appropriate to employ
normalization to both text strings for the purposes of the comparison only.</t>
      <t>Additional complications can come from the fact that some
implementations of applications may rely on operating system libraries
over which they have little control.
The need to maintain interoperability in such environments suggests
that receivers of MNU should be prepared to receive unnormalized text
and should not react to that in excessive ways; however, there also is
no expectation for receivers to go out of their way doing so.</t>
    </section>
    <section anchor="relationship-to-rfc-5198">
      <name>Relationship to RFC 5198</name>
      <t>Of the mandates listed in <xref target="mnu1d"/>,
the third and fourth requirement are also posed by
<xref target="RFC5198"/>, while the first two remove further legacy compatibility
considerations.</t>
      <t><xref target="RFC5198"/> contains some discussion and background material that the
present document does not attempt to repeat; the interested reader may
therefore want to consult it as an informative reference.</t>
      <t>Mandates of <xref target="RFC5198"/> that are specific to a version of Unicode are
not picked up in this specification, e.g., there is no check for
unassigned code points.
Some implementations may want to add such a check; however, in
general, this can hinder further evolution as it may become hard to
use new characters as long as not every component on the way has been
upgraded.
(see also <xref target="version"/>.)</t>
      <section anchor="going-beyond-rfc-5198">
        <name>Going beyond RFC 5198</name>
        <t>The handling of line endings (with 2D MNU prescribing LF as the line
terminator, and adding or specifying CRLF line endings as variances)
may be controversial.
In particular, calling out CR-tolerance as an extra (and often
undesirable) feature may seem novel to some readers.
The handling as specified here is much closer to the way line endings
are handled on the software side than the cumbersome rules of <xref target="RFC5198"/>.
More generally speaking, one could say that the present specification
is intended to be used by state of the art protocols going forward,
maybe less so by existing protocols.</t>
        <t>Even in the "with CR-tolerant lines" variance, the CR character is
only allowed as an embellishment of an immediately following LF
character.  This reflects the fact that overprinting has only seen
niche usage for quite a number of decades now.</t>
        <t>Unicode Line and Paragraph separators probably seemed like a good idea
at the time, but have not taken hold.
Today, their occurrence is more likely to trigger a bug or even serve
as an attack.</t>
        <t>HT characters ("TABs") were needed on ASR33 terminals to speed up
processing of blank spaces at 110 bit/s line speed.
Unless some legacy applications require compatibility with this
ancient and frequently varied convention, HT characters are no longer
appropriate in Modern Network Unicode.
In support of legacy compatibility cases that do require tolerating
their use, the "with HT characters" variance is defined.</t>
        <t>The version-nonspecific nature of MNU creates some fuzziness that may
be undesirable but is more realistic in environments where
applications choose the Unicode version with the Unicode library that
happens to be available to them.</t>
      </section>
      <section anchor="byte-order-marks">
        <name>Byte order marks</name>
        <t>For UTF-8, there is no encoding ambiguity and thus no need for a byte
order mark.
However, some systems have made regular of a leading U+FEFF character
in UTF-8 files, anyway, often in order to mark the file as UTF-8 in
case other character codings are also in use and metadata is not
available.
This destroys the ASCII compatibility of UTF-8; it also creates
problems when systems then start to expect a BOM in UTF-8 input and
none is provided.
Section 6 of <xref target="STD63"/> also RECOMMENDS not using Byte Order Marks with
UTF-8 when it is clear that this charset is being used, but does not
phrase this as an unambiguous mandate, so we add that here (as did
<xref target="RFC5198"/>), unless permitted by a variance.</t>
        <t>Some background on the prohibition of byte order marks: The 16-bit and
32-bit encodings for Unicode are available in multiple byte orders.
The byte order in use in a specific piece of text can be provided by
metadata (such as a media type) or by prefixing the text with a "Byte
Order Mark", U+FEFF.  Since code point U+FFFE is never used in
Unicode, this unambiguously identifies the byte order.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Klaus Hartke and Henk Birkholz drove the author out of his mind enough
to make him finally write this up.  James Manger, Tim Bray and Martin
Thomson provided comments on an early version of this draft.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
