RFC 2278

IANA Charset Registration Procedures

πŸ“… published January 1998, from ietf

RFC 2278: IANA Charset Registration Procedures πŸŽ€

okay bestie, this one is a Best Current Practice (that's BCP 19 up top, the category) πŸ’…. It came out in January 1998 from the Network Working Group, written by N. Freed of Innosoft and J. Postel of ISI. The title block doesn't list anything it obsoletes or updates, so nothing gets replaced or patched here 🧚.

Status of this Memo πŸ“œ

This doc specifies an Internet Best Current Practice for the whole Internet community 🌈, and it's literally asking everyone to chime in with discussion and suggestions for improvements. Distribution is unlimited, so share away πŸ’œ.

Copyright (C) The Internet Society (1998). All Rights Reserved.

1. Abstract ✨

MIME [RFC-2045, RFC-2046, RFC-2047, RFC-2184] and a bunch of other modern Internet protocols can use lots of different charsets 🌸. So being able to label which charset you're using is essential, no cap. This registration procedure exists only to tie a name (or names) to a charset and to say whether that charset can be used in MIME text objects. The general applicability and appropriateness of a registered charset is a protocol issue, not a registration issue, so this procedure doesn't deal with it πŸ™ˆ.

2. Definitions and Notation πŸ’…

Okay, next up are the definitions so we're all on the same page 🫢.

2.1. Requirements Notation

Every so often this doc drops terms in capital letters ✨. When "MUST", "SHOULD", "MUST NOT", "SHOULD NOT", and "MAY" show up capitalized, they're flagging particular requirements of this specification. The meanings of these words are discussed in [RFC-2119].

2.2. Character

A character is a member of a set of elements used for the organisation, control, or representation of data 🧚.

2.3. Charset

"Charset" (see the historical note below) is the term used here for a method of converting a sequence of octets into a sequence of characters πŸ’–. That conversion may also optionally produce extra control information, like directionality indicators.

Heads up: going the other way (characters back to octets) isn't guaranteed to be unconditional or unambiguous. Not every character can be represented by a given charset, and a charset may give more than one octet sequence for the same sequence of characters πŸ‘€.

This definition is meant to let charsets be defined in a whole bunch of different ways, from simple single-table mappings like US-ASCII all the way to complex table-switching methods like the ones that use ISO 2022's techniques πŸ¦‹. But the definition attached to a charset name must fully specify the mapping to be performed. Using external profiling information to determine the exact mapping is not permitted, periodt 🚫.

HISTORICAL NOTE: "Character set" was originally used in MIME for straightforward schemes like US-ASCII and ISO-8859-1. Those have a small set of characters and a simple one-to-one mapping from single octets to single characters. Multi-octet encodings and switching techniques made things way more complex, so the definition got revised to stress the conversion part of the process. The term also changed to "charset" to emphasize that it's not, after all, just a set of characters πŸ€“. The discussion of these issues, plus the standard IETF terminology, lives in RFC 2130.

2.4. Coded Character Set

A Coded Character Set (CCS) is a mapping from a set of abstract characters to a set of integers. Examples are ISO 10646 [ISO-10646], US-ASCII [US-ASCII], and the ISO-8859 series [ISO-8859] πŸ“.

2.5. Character Encoding Scheme

A Character Encoding Scheme (CES) is a mapping from a Coded Character Set or several coded character sets to a set of octets. A given CES is typically associated with a single CCS; for example, UTF-8 applies only to ISO 10646 🌸.

3. Registration Requirements πŸŽ€

Registered charsets are expected to conform to a number of requirements, which are described below πŸ’œ.

3.1. Required Characteristics

Registered charsets MUST conform to the definition of a "charset" given above. In addition, charsets intended for use in MIME content types under the "text" top-level type must conform to the restrictions on that type described in RFC 2045. All registered charsets MUST note whether or not they are suitable for use in MIME πŸ“.

All charsets that are built as a composition of a CCS and a CES MUST either include the CCS and CES they're based on in their registration, or else cite a definition of their CCS and CES that appears elsewhere 🧩.

All registered charsets MUST be specified in a stable, openly available specification. Registering charsets whose specifications aren't stable and openly available is forbidden, so no sneaking those in 🚫.

3.2. New Charsets

This registration mechanism is not meant to be a vehicle for defining entirely new charsets πŸ™ˆ. The reason is that the registration process does NOT contain adequate review mechanisims for that kind of undertaking.

So only charsets defined by other processes and standards bodies, or specific profiles of those charsets, are eligible for registration 🎟️.

3.3. Naming Requirements

One or more names MUST be assigned to all registered charsets. Multiple names for the same charset are permitted, but if multiple names are assigned, a single primary name for the charset MUST be identified. All other names are considered to be aliases for the primary name, and using the primary name is preferred over using any of the aliases 🏷️.

Each assigned name MUST uniquely identify a single charset. All charset names MUST be suitable for use as the value of a MIME content type charset parameter, and hence MUST conform to MIME parameter value syntax. This applies even if the specific charset being registered is not suitable for use with the "text" media type πŸ’….

Finally, charsets being registered for use with the "text" media type MUST have a primary name that conforms to the more restrictive syntax of the charset field in MIME encoded-words [RFC-2047, RFC-2184] and MIME extended parameter values [RFC-2184]. Here's the combined ABNF definition for such names ✨:

mime-charset = 1*<Any CHAR except SPACE, CTLs, and cspecials>

cspecials    = "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "
               <"> / "/" / "[" / "]" / "?" / "." / "=" / "*"

CHAR         =  <any ASCII character>        ; (  0-177,  0.-127.)
SPACE        =  <ASCII SP, space>            ; (     40,      32.)
CTL          =  <any ASCII control           ; (  0- 37,  0.- 31.)
                 character and DEL>          ; (    177,     127.)

3.4. Functionality Requirement

Charsets must actually function as charsets πŸ’…. Registering things that are better thought of as a transfer encoding, a media type, or a collection of separate entities of another type is not allowed. Like, HTML could theoretically be thought of as a charset, but it's really better thought of as a media type, so it cannot be registered as a charset πŸ™…β€β™€οΈ.

3.5. Usage and Implementation Requirements

Using a large number of charsets in a given protocol may hamper interoperability 🧡. But a large number of undocumented and/or unlabelled charsets hampers interoperability even more πŸ’€.

So a charset should therefore be registered ONLY if it adds significant functionality that's valuable to a large community, OR if it documents existing practice in a large community. Note that charsets registered for the second reason should be explicitly marked as being of limited or specialized use, and should only be used in Internet messages with prior bilateral agreement 🀝.

3.6. Publication Requirements

Charset registrations can be published in RFCs. However, RFC publication is not required to register a new charset πŸ“š.

Registering a charset does not imply endorsement, approval, or recommendation by the IANA, IESG, or IETF, or even certification that the specification is adequate. It is expected that applicability statements for particular applications will be published from time to time, recommending implementation of and support for charsets that have proven particularly useful in those contexts 🌟.

3.7. MIBenum Requirements

Each registered charset MUST also be assigned a unique enumerated integer value. These "MIBenum" values are defined by, and used in, the Printer MIB [RFC-1759] πŸ–¨οΈ.

IANA assigns a MIBenum value for each charset at the time of registration 🧚.

4. Registration Procedure πŸ¦‹

The IANA has implemented the following procedure for reviewing and approving new charsets. It's not a formal standards process. It's more of an administrative procedure meant to allow community comment and sanity checking without a ton of delay ⏱️.

4.1. Present the Charset to the Community

Send the proposed charset registration to the "ietf-charsets@iana.org" mailing list. This list was set up for the sole purpose of reviewing proposed charset registrations πŸ“¬. Proposed charsets are not formally registered and must not be used. You can use the "x-" prefix specified in RFC 2045 until registration is complete πŸŽ€.

The point of the public posting is to get comments and feedback on the definition of the charset and on the name chosen for it, over a two week period πŸ’¬.

4.2. Charset Reviewer

Once the two week period has passed, and the registration proposer is convinced that consensus has been achieved, the registration application should be submitted to IANA and the charset reviewer 🧐. The charset reviewer is appointed by the IETF Applications Area Director(s), and they either approve the request for registration or reject it. Rejection can happen because of significant objections raised on the list or objections raised externally πŸ™…. If the charset reviewer thinks the registration is sufficiently important and controversial, a last call for comments may be issued to the full IETF πŸ“£. The charset reviewer may also recommend standards track processing (before or after registration) when that seems appropriate and the level of specification of the charset is adequate πŸ›€οΈ.

Decisions made by the reviewer must be posted to the ietf-charsets mailing list within 14 days. Decisions made by the reviewer may be appealed to the IESG βš–οΈ.

4.3. IANA Registration

As long as the charset registration has either passed review or been successfully appealed to the IESG, the IANA will register the charset, assign a MIBenum value, and make its registration available to the community πŸŽ‰.

Part 1 ends here! Section 5 (Location of Registered Charset List) comes up in part 2 πŸ’–πŸ§š

6. Registration Template πŸ’…

okay so this is the actual form you fill out to register a new charset πŸ“ bestie, the whole thing goes to ietf-charsets@iana.org with a subject line, and there are three slots to fill in 🫢

To: ietf-charsets@iana.org
Subject: Registration of new charset

Charset name(s):

(All names must be suitable for use as the value of a MIME content-
type parameter.)

Published specification(s):

(A specification for the charset must be openly available that
accurately describes what is being registered. If a charset is
defined as a composition of a CCS and a CES then these defintions
must either be included or referenced.)

Person & email address to contact for further information:

7. Security Considerations πŸ”

okay this part is serious, so listen up πŸ‘‘ this registration procedure is not known to raise any sort of security considerations that are appreciably different from the ones already sitting in the protocols that use registered charsets. so no brand new security drama from the form itself, but the protocols using these charsets still have their own security stuff to think about πŸ™ˆ

8. References πŸ“š

  • [ISO-2022] International Standard -- Information Processing -- Character Code Structure and Extension Techniques, ISO/IEC 2022:1994, 4th ed.
  • [ISO-8859] International Standard -- Information Processing -- 8-bit Single-Byte Coded Graphic Character Sets
    • Part 1: Latin Alphabet No. 1, ISO 8859-1:1987, 1st ed.
    • Part 2: Latin Alphabet No. 2, ISO 8859-2:1987, 1st ed.
    • Part 3: Latin Alphabet No. 3, ISO 8859-3:1988, 1st ed.
    • Part 4: Latin Alphabet No. 4, ISO 8859-4:1988, 1st ed.
    • Part 5: Latin/Cyrillic Alphabet, ISO 8859-5:1988, 1st ed.
    • Part 6: Latin/Arabic Alphabet, ISO 8859-6:1987, 1st ed.
    • Part 7: Latin/Greek Alphabet, ISO 8859-7:1987, 1st ed.
    • Part 8: Latin/Hebrew Alphabet, ISO 8859-8:1988, 1st ed.
    • Part 9: Latin Alphabet No. 5, ISO/IEC 8859-9:1989, 1st ed.
  • International Standard -- Information Technology -- 8-bit Single-Byte Coded Graphic Character Sets
    • Part 10: Latin Alphabet No. 6, ISO/IEC 8859-10:1992, 1st ed.
  • [ISO-10646] ISO/IEC 10646-1:1993(E), "Information technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane", JTC1/SC2, 1993.
  • [RFC-2048] Freed, N., Klensin, J., and J. Postel, "Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures", RFC 2048, November 1996.
  • [RFC-1700] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1700, October 1994.
  • [RFC-1759] Smith, R., Wright, F., Hastings, T., Zilles, S., and J. Gyllenskog, "Printer MIB", RFC 1759, March 1995.
  • [RFC-2045] Freed, N., and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, November 1996.
  • [RFC-2046] Freed, N., and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November 1996.
  • [RFC-2047] Moore, K., "Multipurpose Internet Mail Extensions (MIME) Part Three: Representation of Non-Ascii Text in Internet Message Headers", RFC 2047, November 1996.
  • [RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC-2130] Weider, C., Preston, C., Simonsen, K., Alvestrand, H., Atkinson, R., Crispin, M., and P. Svanberg, "Report from the IAB Character Set Workshop", RFC 2130, April 1997.
  • [RFC-2184] Freed, N., and K. Moore, "MIME Parameter Value and Encoded Word Extensions: Character Sets, Languages, and Continuations", RFC 2184, August 1997.
  • [US-ASCII] Coded Character Set -- 7-Bit American Standard Code for Information Interchange, ANSI X3.4-1986.

9. Authors' Addresses 🧚

Ned Freed
Innosoft International, Inc.
1050 Lakes Drive
West Covina, CA 91790
USA

Phone: +1 626 919 3600
Fax:   +1 626 919 3614
EMail: ned.freed@innosoft.com


Jon Postel
USC/Information Sciences Institute
4676 Admiralty Way
Marina del Rey, CA  90292
USA

Phone: +1 310 822 1511
Fax:   +1 310 823 6714
EMail: Postel@ISI.EDU

Copyright (C) The Internet Society (1998). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 🌈

πŸ“¦ where this page comes from