Введение
Набор символов Windows для корейского языка, или Extended Wansung, также известный в Microsoft Windows как Code Page 949 (Windows 949, MS949 или неоднозначно CP949), является кодовой страницей Microsoft Windows для корейского языка. Это расширение кодировки Wansung (KS C 5601:1987, закодированной как EUC KR) для включения всех 11172 неполных слогов хангыля, представленных в Johab (приложение 3 к KS C 5601:1992). Это соответствует предварительно составленным слогам, доступным в Unicode 2.0 и более поздних версиях. Кодировка Wansung имеет недостаток: она присваивает коды только 2350 предварительно составленным слогам хангыля, имеющим собственные кодовые точки KS X 1001 (KS C 5601) (из общего числа 11172, не считая тех, которые используют устаревшие jamo), и требует использования восьмибайтовых последовательностей для остальных, которые не поддерживаются некоторыми частичными реализациями стандарта. UHC решает эту проблему, присваивая отдельные коды всем возможным слогам, построенным с использованием современных jamo, путем назначения кодов вне кодировочного пространства, используемого для KS X 1001. Диапазон ведущих байтов расширен до 0x81–FE, а диапазон завершающих байтов расширен до 0x41–5A, 0x61–7A и 0x81–FE (в EUC KR оба диапазона – 0xA1–FE). Коды, выходящие за пределы диапазонов EUC KR, используются для дополнительных символов хангыль. Рассматриваемые отдельно, блок EUC KR Hangul и расширенный блок UHC Hangul расположены в порядке Unicode. Альтернативой является UTF-8. Однако стандарт кодирования W3C/WHATWG, используемый в HTML5, включает расширения Unified Hangul Code в свое определение "EUC KR". Microsoft присваивает Windows 949 метку "ks c 5601 1987", которая корректно относится к самому KS X 1001 (KS C 5601 является исходным названием KS X 1001). WHATWG рассматривает метку "ks c 5601 1987" как взаимозаменяемую с "EUC KR" с целью обеспечения "совместимости с существующим контентом". В коллекцию устаревших и отозванных сопоставлений "OBSOLETE/EASTASIA" Консорциума Unicode были включены сопоставления для Unified Hangul Code под названием "KSC5601.TXT", а автоматически полученные сопоставления для 7-битного KS X 1001 – под названием "KSX1001.TXT". Кодовая страница 949 IBM является другим, не связанным с этим, расширением EUC KR. International Components for Unicode (ICU) использует "cp949", "949" или "ibm 949" для ссылки на эту кодовую страницу IBM и "ms949" или "windows 949" (или различные варианты "ks c 5601 1987") для ссылки на сопоставление Windows UHC. Из меток, включающих номер кодовой страницы, WHATWG распознает только "windows 949". Она отличается тем, что имеет однобайтовое сопоставление 0x5C знаку воны (U+20A9); Windows сопоставляет 0x5C с U+005C (кодовая точка Unicode для обратной косой черты), как в ASCII, хотя шрифты часто все еще отображают его как знак воны. Сопоставление Unicode для волновой черты (0xA1AD) также отличается: сопоставление IBM предпочитает U+301C, а сопоставление Microsoft – U+223C (оператор тильды). Сопоставление IBM для UHC доступно как "ibm 1363" в ICU.
or Extended Wansung, 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). This corresponds to the pre composed syllables available in Unicode 2.0 and later. 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. 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. If considered separately, both the EUC KR Hangul block and the UHC extended Hangul section are in Unicode order. 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". Microsoft assigns Windows 949 the label "ks c 5601 1987", which properly applies to KS X 1001 itself (KS C 5601 being the original name of KS X 1001). The WHATWG treat the label "ks c 5601 1987" interchangeably with "EUC KR" with the intent of being "compatible with deployed content". 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". 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, and "ms949" or "windows 949" (or several variants of "ks c 5601 1987") to refer to the Windows mapping of UHC. Out of the labels incorporating the code page number, the WHATWG recognise only "windows 949". It differs in having a single byte mapping of 0x5C to the Won sign (U+20A9); Windows maps 0x5C to U+005C (the Unicode code point for the backslash) as in ASCII, although fonts often still render it as a Won sign. Unicode mapping of the wave dash (0xA1AD) also differs, with the IBM mapping favouring U+301C, while the Microsoft mapping favours U+223C (Tilde Operator). The IBM mapping for UHC is available as "ibm 1363" in ICU,
Коды одного байта
Ниже приведена однобайтовая часть кодовой страницы, определенная компанией IBM. Подобно кодовой странице 437, байты управляющих кодов могут использоваться как управляющие коды или графические символы в зависимости от контекста — графические символы приведены ниже. Microsoft использует сопоставления ASCII для всех байтов ASCII, хотя символ обратной косой черты все еще может отображаться как знак песо.