Korean in mail: Korean Character Encoding for Internet Messages
Standard encoding for Korean characters in email and message headers.
Choi, U., Chon, K., and H. Park, "Korean Character Encoding for Internet Messages", RFC 1557, DOI 10.17487/RFC1557, December 1993, <https://www.rfc-editor.org/info/rfc1557>.
@misc{rfc1557,
series = {Request for Comments},
number = 1557,
howpublished = {RFC 1557},
publisher = {RFC Editor},
doi = {10.17487/RFC1557},
url = {https://www.rfc-editor.org/info/rfc1557},
author = {U. Choi and K. Chon and H. Park},
title = {{Korean Character Encoding for Internet Messages}},
pagetotal = 5,
year = 1993,
month = dec,
} RFC text
Contents
Network Working Group U. Choi
Request for Comments: 1557 K. Chon
Category: Informational KAIST
H. Park
Solvit Chosun Media
December 1993
Korean Character Encoding for Internet Messages
Status of this Memo
This memo provides information for the Internet community. This memo
does not specify an Internet standard of any kind. Distribution of
this memo is unlimited.
Introduction
This document describes the encoding method being used to represent
Korean characters in both header and body part of the Internet mail
messages [RFC822]. This encoding method was specified in 1991, and
has since then been used. It has now widely being used in Korean IP
networks.
This document also describes the name of the encoding method which is
to be used in order to match the message header and body format of
MIME [MIME1, MIME2].
This document describes only the encoding method for plain text.
Other text subtypes, rich text and similar forms of text, are beyond
the scope of this document.
Description
It is assumed that the starting code of the message is ASCII. ASCII
and Korean characters can be distinguished by use of the shift
function. For example, the code SO will alert us that the upcoming
bytes will be a Korean character as defined in KSC 5601. To return
to ASCII the SI code is used.
Therefore, the escape sequence, shift function and character set used
in a message are as follows:
SO KSC 5601
SI ASCII
ESC $ ) C Appears once in the beginning of a line
before any appearance of SO characters.
The KSC 5601 [KSC5601] character set that includes Hangul, Hanja
(Chinese ideographic characters), graphic and foreign characters,
etc., is two bytes long for each character.
For more information about Korean character sets please refer to the
KSC 5601-1987 document. Also, for more detailed information about
the escape sequence and the shift function you can look for the ISO
2022 [ISO2022] document.
Formal Syntax
Where this document in its formal syntax does not agree with the
description part, priority should be given to the formal syntax of
the document.
The notations used in this section of the document are according to
those used in STD 11, RFC 822 [RFC822] with the same meaning.
* (asterisk) has the following meaning :
l*m "anything"
The above means that "anything" has to be used at least l times and
at most m times. Default values for l and m are 0 and infinitive,
respectively.
body = *e-line *1( designator *( e-line / h-line ))
designator = ESC "$" ")" "C"
e-line = *text CRLF
h-line = *text 1*( segment *text ) CRLF
segment = SO 1*(one-of-94 one-of-94 SI
; ( Octal, Decimal.)
ESC = <ISO 2022 ESC, escape> ; ( 33, 27.)
SO = <ASCII SO, shift out> ; ( 16, 14.)
SI = <ASCII SI, shift in> ; ( 17, 15.)
SP = <ASCII SP, space> ; ( 40, 32.)
one-of-94 = <any char in 94-char set> ; (41-176, 33.-126.)
CHAR = <any ASCII character> ; ( 0-177, 0.-127.)
text = <any CHAR, including bare CR & bare LF, but NOT
including CRLF, and not including ESC, SI, SO>
MIME and RFC 1522 Considerations
The name to be used for the Hangul encoding scheme in the contents is
"ISO-2022-KR". This name when used in MIME message form would be:
Content-Type: text/plain; charset=iso-2022-kr
Since the Hangul encoding is done with 7 bit format in nature, the
Content-Transfer-Encoding-header does not need to be used. However,
while using the Hangul encoding, current Hangul message softwares
does not support Base64 or Quoted-Printable encoding applied on
already encoded Hangul messages.
The Hangul encoded in the header part of the message is Korean EUC
[EUC-KR]. In the EUC-KR encoding, the bytes with 8th bit set will be
recognized as KSC-5601 characters. To use Hangul in the header part,
according to the method proposed in RFC 1522, the encoded Hangul are
"B" or "Q" encoded. When doing so, the name to be used will be EUC-
KR.
Background Information
The Hangul encoding system is based on the ISO 2022 [ISO2022]
environment according to its 4/4 announcement. However, the Hangul
encoding does not include the announcement's escape sequence.
The KSC 5601 used in this document is, in definition, identical to
the KSC 5601-1987, KSC 5601-1989 and KSC 5601-1992's 94x94 octet
definition. Therefore, any revision that refers to KSC-5601 after
1992 is to be considered as having the same meaning.
At present, the Hangul encoding system is based on the experience
acquired from the former widely used "N-Byte Hangul" among UNIX
users. Actually, the encoding method, "N-Byte Hangul", using SO and
SI was the encoding method used in SDN before KSC 5601 was made a
national standard.
This code is intended to be used for the information interchange of
Hangul messages; any other use of the code is not considered
appropriate.
References
[ASCII] American National Standards Institute, "Coded character set
-- 7-bit American national standard code for information
interchange", ANSI X3.4-1968
[ISO2022] International Organization for Standardization (ISO),
"Information processing -- ISO 7-bit and 8-bit coded
character sets -- Code extension techniques",
International Standard, 1986, Ref. No. ISO 2022-1986 (E).
[KSC5601] Korea Industrial Standards Association, "Code for
Information Interchange (Hangul and Hanja)," Korean
Industrial Standard, 1987, Ref. No. KS C 5601-1987.
[EUC-KR] Korea Industrial Standards Association, "Hangul Unix
Environment," Korean Industrial Standard, 1992, Ref. No.
KS C 5861-1992.
[RFC822] Crocker, D., "Standard for the Format of ARPA Internet
Text Messages", STD 11, RFC 822, UDEL, August 1982.
[MIME1] Borenstein, N., and N. Freed, "MIME (Multipurpose
Internet Mail Extensions): Part One: Mechanisms for
Specifying and Describing the Format of Internet Message
Bodies", RFC 1521, Bellcore, Innosoft, September 1993.
[MIME2] Moore, K., "MIME (Multipurpose Internet Mail Extensions)
Part Two: Message Header Extensions for Non-ASCII Text",
RFC 1522, University of Tennessee, September 1993.
Security Considerations
Security issues are not discussed in this memo.
Acknowledgments
The authors wants to thank all the people who assisted in writing
this document. In particular, we thank Erik von der Poel, Felix M.
Villarreal, Ienup Sung, Kyoung Namgoong, and Kyuho Kim.
Authors' Addresses
Uhhyung Choi
Korea Advanced Institute of Science and Technology
Department of Computer Science
Taejon, 305-701, Republic of Korea
Phone: +82-42-869-8718
Fax: +82-42-869-3510
EMail: uhhyung@kaist.ac.kr
Kilnam Chon
Korea Advanced Institute of Science and Technology
Department of Computer Science
Taejon, 305-701, Republic of Korea
Phone: +82-42-869-3514
Fax: +82-42-869-3510
EMail: chon@cosmos.kaist.ac.kr
Hyunje Park
Solvit Chosun Media, Inc.
748-16 Yeoksam-Dong, Kangnam-Gu
Seoul, 135-080, Republic of Korea
Phone: +82-2-561-0361
Fax: +82-2-569-4847
EMail: hjpark@dino.media.co.kr
AI ELI5
On this page
§1Documenting an Existing Standard
Korean mail systems had been using a particular encoding method since 1991, and it had become widely adopted across Korean IP networks. However, no official RFC documented the method or aligned it with MIME standards. This document standardizes that de-facto practice, specifying how to represent Korean characters in both the headers and bodies of Internet mail messages. The encoding method assumes messages begin in ASCII and use shift functions to switch to KSC 5601, the Korean character set that includes Hangul (the native alphabet), Hanja (Chinese ideographic characters), and graphics.
Korea was already using a way to send Korean letters in email, but it was not officially written down. This memo documents that method.
§2The ISO-2022-KR Encoding
ISO-2022-KR uses three key control codes to switch between ASCII and Korean text: the escape sequence ESC $ ) C (which appears once at the beginning of a line before any Korean characters), SO (shift out) to begin Korean text, and SI (shift in) to return to ASCII. KSC 5601 characters are two bytes long, allowing representation of Hangul, Hanja, and other symbols. The escape sequence appears once at the start of a line, and then SO-SI pairs mark boundaries between Korean and ASCII throughout the message. The encoding is inherently 7-bit, so no additional Content-Transfer-Encoding is needed.
Special codes say 'Korean text starts here' and 'back to English now.' Each Korean letter takes two bytes.
§3MIME Declarations and Header Encoding
For the message body, the Content-Type header specifies charset=iso-2022-kr, and Content-Transfer-Encoding can be omitted since the encoding is 7-bit. For message headers, Korean must be encoded differently using EUC-KR (Extended Unix Code for Korean), which is 8-bit. Header text is then further encoded using the B-encoding (Base64) or Q-encoding (Quoted-Printable) methods defined in RFC 1522. This two-level encoding (EUC-KR inside B/Q encoding) allows mail clients to display Korean names and subjects in message headers.
The message body uses one type of encoding, and the header (with names and subjects) uses a different type.