Введение

Набор символов 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.

Коды одного байта

Ниже приведена однобайтовая часть кодовой страницы, определенная компанией IBM. Подобно кодовой странице 437, байты управляющих кодов могут использоваться как управляющие коды или графические символы в зависимости от контекста — графические символы приведены ниже. Microsoft использует сопоставления ASCII для всех байтов ASCII, хотя символ обратной косой черты все еще может отображаться как знак песо.