Unified Hangul Code

Last updated
Unified Hangul Code
Unified Hangul Code.svg
Layout of the Unified Hangul Code
Alias(es)
  • Windows Code Page 949
  • IBM Code Page 1363
Language(s) Korean
StandardWHATWG Encoding Standard (as "EUC-KR") [1]
Classification
Extends EUC-KR
Other related encoding(s)
  1. Not in the strictest sense of the term, as ASCII bytes can appear as trail bytes, although this is limited to letter bytes.

Unified Hangul Code (UHC), [2] [lower-alpha 1] or Extended Wansung, [4] [lower-alpha 2] also known under Microsoft Windows as Code Page 949 (Windows-949, MS949 or ambiguously CP949), is the Microsoft Windows code page for the Korean language. It is an extension of Wansung Code (KS C 5601:1987, encoded as EUC-KR) to include all 11172 non-partial Hangul syllables present in Johab (KS C 5601:1992 annex 3). [4] [2] This corresponds to the pre-composed syllables available in Unicode 2.0 and later.

Contents

Wansung Code has the drawback that it only assigns codes for the 2350 precomposed Hangul syllables which have their own KS X 1001 (KS C 5601) codepoints (out of 11172 in total, not counting those using obsolete jamo), and requires others to use eight-byte composition sequences, which are not supported by some partial implementations of the standard. [5] UHC resolves this by assigning single codes for all possible syllables constructed using modern jamo, by making assignments outside of the encoding space used for KS X 1001.

The lead byte range is extended to 0x81–FE, and the trail byte range is extended to 0x41–5A, 0x61–7A and 0x81–FE (in EUC-KR, both ranges are 0xA1–FE). The codes outside the EUC-KR ranges are used for the additional hangul. [6] If considered separately, both the EUC-KR Hangul block and the UHC extended Hangul section are in Unicode order. [1]

Terminology

Unified Hangul Code is not registered with IANA as a standard to communicate information over the Internet. [7] Alternatives include UTF-8. However, the W3C/WHATWG Encoding Standard used by HTML5 incorporates the Unified Hangul Code extensions into its definition of "EUC-KR". [1]

Microsoft assigns Windows-949 the label "ks_c_5601-1987", [8] [9] which properly applies to KS X 1001 itself (KS C 5601 being the original name of KS X 1001). [10] The WHATWG treat the label "ks_c_5601-1987" interchangeably with "EUC-KR" with the intent of being "compatible with deployed content". [11] The Unicode Consortium's "OBSOLETE/EASTASIA" collection of withdrawn mappings included mappings for Unified Hangul Code as "KSC5601.TXT", with the automatically derived mappings for 7-bit KS X 1001 being included as "KSX1001.TXT". [12]

IBM's code page 949 is another, otherwise unrelated, extension of EUC-KR. International Components for Unicode (ICU) uses "cp949", "949" or "ibm-949" to refer to that IBM code page, [13] and "ms949" or "windows-949" (or several variants of "ks_c_5601-1987") to refer to the Windows mapping of UHC. [14] Python, by contrast, recognises "cp949", "949", "ms949" and "uhc" as labels for UHC, and does not include an IBM-949 codec. [15] Out of the labels incorporating the code page number, the WHATWG recognise only "windows-949". [11]

IBM's code page for Unified Hangul Code is called Code page 1363 (IBM-1363), or "Korean MS-Win". It is a combination of SBCS Code page 1126 and DBCS Code page 1362. [16] [17] [18] [19] [20] It differs in having a single byte mapping of 0x5C to the Won sign (U+20A9); [21] [22] [23] Windows maps 0x5C to U+005C (the Unicode code point for the backslash) as in ASCII, [14] although fonts often still render it as a Won sign. [24] Unicode mapping of the wave dash (0xA1AD) also differs, with the IBM mapping favouring U+301C, [25] while the Microsoft mapping favours U+223C (Tilde Operator). [26] The IBM mapping for UHC is available as "ibm-1363" in ICU, [21] whereas the ICU "windows-949" codec is referred to as IBM-1261 in some ICU source code comments. [27]

Single byte codes

Following is the single-byte portion of the code page as defined by IBM. Similarly to Code page 437, the control code bytes may be used as control codes or graphical codes depending on context—the graphical codes are shown below. Microsoft uses ASCII mappings for all ASCII bytes, although the backslash may still be rendered as a won sign.

Code page 1126 [28] [29] [30] [31]
0123456789ABCDEF
0x NUL
1x
2x  SP   ! " # $ % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4x @ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z [ ] ^ _
6x ` a b c d e f g h i j k l m n o
7x p q r s t u v w x y z { | } ~
  Differences from code page 437

Footnotes

  1. Korean: 통합형 한글 코드 [3] , romanized: Tonghabhyeong Hangeul Kodeu
  2. Korean: 확장 완성형, romanized: Hwagjang Wanseonghyeong

Related Research Articles

<span class="mw-page-title-main">Windows-1252</span> Windows character set for Latin alphabet

Windows-1252 or CP-1252 is a single-byte character encoding of the Latin alphabet that was used by default in Microsoft Windows for English and many Romance and Germanic languages including Spanish, Portuguese, French, and German. This character-encoding scheme is used throughout the Americas, Western Europe, Oceania, and much of Africa.

ISO/IEC 8859-8, Information technology — 8-bit single-byte coded graphic character sets — Part 8: Latin/Hebrew alphabet, is part of the ISO/IEC 8859 series of ASCII-based standard character encodings. ISO/IEC 8859-8:1999 from 1999 represents its second and current revision, preceded by the first edition ISO/IEC 8859-8:1988 in 1988. It is informally referred to as Latin/Hebrew. ISO/IEC 8859-8 covers all the Hebrew letters, but no Hebrew vowel signs. IBM assigned code page 916 to it. This character set was also adopted by Israeli Standard SI1311:2002, with some extensions.

ISO/IEC 8859-9:1999, Information technology — 8-bit single-byte coded graphic character sets — Part 9: Latin alphabet No. 5, is part of the ISO/IEC 8859 series of ASCII-based standard character encodings, first edition published in 1989. It is designated ECMA-128 by Ecma International and TS 5881 as a Turkish standard. It is informally referred to as Latin-5 or Turkish. It was designed to cover the Turkish language, designed as being of more use than the ISO/IEC 8859-3 encoding. It is identical to ISO/IEC 8859-1 except for the replacement of six Icelandic characters with characters unique to the Turkish alphabet. And the uppercase of i is İ; the lowercase of I is ı.

Windows-1258 is a code page used in Microsoft Windows to represent Vietnamese texts. It makes use of combining diacritical marks.

Extended Unix Code (EUC) is a multibyte character encoding system used primarily for Japanese, Korean, and simplified Chinese (characters).

The Hong Kong Supplementary Character Set is a set of Chinese characters – 4,702 in total in the initial release—used in Cantonese, as well as when writing the names of some places in Hong Kong.

<span class="mw-page-title-main">Code page 866</span> Computer character set for Russian

Code page 866 is a code page used under DOS and OS/2 in Russia to write Cyrillic script. It is based on the "alternative code page" developed in 1984 in IHNA AS USSR and published in 1986 by a research group at the Academy of Science of the USSR. The code page was widely used during the DOS era because it preserves all of the pseudographic symbols of code page 437 and maintains alphabetic order of Cyrillic letters. Initially this encoding was only available in the Russian version of MS-DOS 4.01 (1990), but with MS-DOS 6.22 it became available in any language version.

Windows code page 1253, commonly known by its IANA-registered name Windows-1253 or abbreviated as cp1253, is a Microsoft Windows code page used to write modern Greek. It is not capable of supporting the older polytonic Greek.

Windows-1254 is a code page used under Microsoft Windows, to write Turkish that it was designed for. Characters with codepoints A0 through FF are compatible with ISO 8859-9, but the CR range, which is reserved for C1 control codes in ISO 8859, is instead used for additional characters. It is similar to ISO/IEC 8859-1 except for the replacement of six Icelandic characters with characters unique to the Turkish alphabet.

Windows-1256 is a code page used under Microsoft Windows to write Arabic and other languages that use Arabic script, such as Persian and Urdu.

Windows-1257 is an 8-bit, single-byte extended ASCII code page used to support the Estonian, Latvian and Lithuanian languages under Microsoft Windows. In Lithuania, it is standardised as LST 1590-3, alongside a modified variant named LST 1590-4.

Windows code pages are sets of characters or code pages used in Microsoft Windows from the 1980s and 1990s. Windows code pages were gradually superseded when Unicode was implemented in Windows, although they are still supported both within Windows and other platforms, and still apply when Alt code shortcuts are used.

Windows code page 936, is Microsoft's legacy (pre-Unicode) character encoding for representing simplified Chinese text on computers. It is one of the four Windows DBCSs for East Asian languages, accompanying code pages 932 (Japanese), 949 (Korean) and 950. It is a variant of the Mainland Chinese Guójiā Biāozhǔn Kuòzhǎn (GBK) encoding, and roughly corresponds to IBM code page 1386.

<span class="mw-page-title-main">Code page 950</span> Windows character set for Traditional Chinese

Code page 950 is the code page used on Microsoft Windows for Traditional Chinese. It is Microsoft's implementation of the de facto standard Big5 character encoding. The code page is not registered with IANA, and hence, it is not a standard to communicate information over the internet, although it is usually labelled simply as big5, including by Microsoft library functions.

KS X 1001, "Code for Information Interchange ", formerly called KS C 5601, is a South Korean coded character set standard to represent hangul and hanja characters on a computer.

Microsoft Windows code page 932, also called Windows-31J amongst other names, is the Microsoft Windows code page for the Japanese language, which is an extended variant of the Shift JIS Japanese character encoding. It contains standard 7-bit ASCII codes, and Japanese characters are indicated by the high bit of the first byte being set to 1. Some code points in this page require a second byte, so characters use either 8 or 16 bits for encoding.

<span class="mw-page-title-main">Code page 949 (IBM)</span>

IBM code page 949 (IBM-949) is a character encoding which has been used by IBM to represent Korean language text on computers. It is a variable-width encoding which represents the characters from the Wansung code defined by the South Korean standard KS X 1001 in a format compatible with EUC-KR, but adds IBM extensions for additional hanja, additional precomposed Hangul syllables, and user-defined characters.

IBM code page 936 is a character encoding for Simplified Chinese including 1880 user-defined characters (UDC), which was superseded in 1993. It is a combination of the single-byte Code page 903 and the double-byte Code page 928. Code page 946 uses the same double-byte component, but an extended single-byte component.

Code page 951 is a code page number used for different purposes by IBM and Microsoft.

References

  1. 1 2 3 van Kesteren, Anne, "5. Indexes (§ index EUC-KR)", Encoding Standard, WHATWG
  2. 1 2 "INFO: Hangul (Korean) Character Sets", Microsoft Support, Microsoft
  3. "한글 코드에 대하여" (in Korean). W3C.
  4. 1 2 Zsigri, Gyula (2002-06-18). "KSC and UHC".
  5. Shin, Jungshik. "What are KS X 1001(KS C 5601) and other Hangul codes?". Hangul & Internet in Korea FAQ.
  6. Lunde, Ken (13 January 2009). "Appendix F: Vendor encoding Methods" (PDF). CJKV Information Processing (2nd ed.). O'Reilly Media. ISBN   978-0-596-51447-1.
  7. "Character Sets". Iana.org. Retrieved 2017-01-11.
  8. "Encoding.WindowsCodePage Property - .NET Framework (current version)". MSDN. Microsoft.
  9. "Code Page Identifiers", Windows Dev Center, Microsoft
  10. IBM; Unicode Consortium. "convrtrs.txt". International Components for Unicode. v. 59180.0.1. <quote from="Jungshik Shin"> [...] using KS C 5601 or related names to denote EUC-KR or windows-949 is very much misleading [...] It's just the name of a 94 x 94 Korean coded character set standard which can be invoked on either GL (with MSB reset) or GR (with MSB set).
  11. 1 2 van Kesteren, Anne. "4.2. Names and labels". Encoding Standard. WHATWG.
  12. Jungshik Shin. "KSX1001.TXT: KS X 1001 to Unicode table". Unicode, Inc.
  13. "ibm-949_P110-1999 (alias cp949)", Converter Explorer, International Components for Unicode
  14. 1 2 "windows-949-2000", Converter Explorer, International Components for Unicode
  15. "codecs — Codec registry and base classes § Standard Encodings". Python 3.7.2 documentation. Python Software Foundation.
  16. "Coded character set identifiers - CCSID 1363", IBM Globalization, IBM, archived from the original on 2014-11-29
  17. "Code page 1126 information document". Archived from the original on 2017-01-16.
  18. "CCSID 1126 information document". Archived from the original on 2016-03-27.
  19. "Code page 1362 information document". Archived from the original on 2016-03-17.
  20. "CCSID 1362 information document". Archived from the original on 2016-03-27.
  21. 1 2 "ibm-1363", Converter Explorer, International Components for Unicode
  22. Code Page CPGID 01126 (pdf) (PDF), IBM
  23. Code Page CPGID 01126 (txt), IBM
  24. Kaplan, Michael S. (2005-09-17), "When is a backslash not a backslash?", Sorting it all out
  25. "ibm-1363_P110-1997 (lead byte A1)". ICU Demonstration - Converter Explorer. International Components for Unicode.
  26. "windows-949-2000 (lead byte A1)". ICU Demonstration - Converter Explorer. International Components for Unicode.
  27. See, for reference, ucnv_lmb.cpp (Brendan Murray, Jim Snyder-Grant), where the lead byte 0x11 is commented as referring to "Korean: ibm-1261" after the definition of ULMBCS_GRP_KO, but it is mapped to the "windows-949" ICU codec in the OptGroupByteToCPName array later in the file.
  28. Code Page CPGID 01126 (pdf) (PDF), IBM
  29. Code Page CPGID 01126 (txt), IBM
  30. ICU Demonstration mapping IBM-1363 to Unicode
  31. ICU Demonstration mapping IBM-1363C (ASCII based variant) to Unicode