KS X 1001 , « Код для обмена информацией (хангыль и ханджа) », [d] [1] ранее называвшийся KS C 5601 , представляет собой южнокорейский стандарт кодировки символов для представления символов хангыль и ханджа на компьютере.
KS X 1001 кодируется наиболее распространенными устаревшими (до Unicode ) кодировками символов для корейского языка , включая EUC-KR и Microsoft's Unified Hangul Code (UHC). Он содержит корейские слоги хангыль , идеограммы CJK (ханджа), греческие , кириллические , японские ( хирагана и катакана ) и некоторые другие символы.
KS X 1001 организован как таблица 94×94, соответствующая структуре 2-байтовых кодовых слов в ISO 2022 и EUC . Поэтому его кодовые точки представляют собой пары целых чисел 1–94. Однако некоторые кодировки (UHC и Johab ), помимо предоставления кодов для каждой кодовой точки, предоставляют дополнительные коды для символов, которые в противном случае можно было бы представить только как последовательности кодовых точек.
Этот стандарт ранее был известен как KS C 5601. Было несколько редакций этого стандарта. Например, редакции были в 1987, 1992, 1998 и 2002 годах.
Современный двухбайтовый набор символов Wansung ( 완성 ; Wanseong ; букв. предсоставление) [1] был стандартизирован третьим изданием KS C 5601, [2] опубликованным в 1986 году. [3] Это кодировка, совместимая с ISO 2022 , обычно используемая в форме EUC , которая назначает двухбайтовые коды для не-хангыльских, хангыльских джамо и наиболее распространенных слогов хангыль, в отличие от Johab ( 조합 ; Johap ; букв. объединение) [1] , которая несовместима с ISO 2022, но назначает двухбайтовые коды всем слогам хангыль с использованием современного джамо. [2] Wansung технически является кодировкой переменной длины, позволяющей представлять другие слоги восьмибайтовыми последовательностями (с использованием джамо и символа-заполнителя хангыль), но эта функция не всегда реализована. [4]
Самое раннее издание KS C 5601, опубликованное в 1974 году, [2] определило набор символов переменной длины [2] из 7 бит, который назначил однобайтовые кодовые точки 51 [3] базовому хангыль джамо , в некоторой степени аналогично JIS C 6220 , в кодировке, известной как «N-байтовый хангыль». [5] Второе издание, опубликованное в 1982 году, сохранило основной набор символов из издания 1974 года, но определило два дополнительных набора, включая версию Johab. Ни одно из изданий не было принято так широко, как предполагалось. [2]
Wansung был оставлен без изменений в изданиях 1987 и 1992 годов. В издании 1992 года был добавлен дополнительный материал приложения, [3] включая определение кодировки Johab [6] в приложении 3 и более старую N-байтовую кодировку Hangul в приложении 4. [1] [5] Он был опубликован в ответ на использование в промышленности Johab в качестве конкурирующей кодировки Wansung, которая в то время использовалась Hangul Word Processor . После введения компанией Microsoft унифицированного кода Hangul в Windows 95 и отказа Hangul Word Processor от Johab в пользу Unicode в 2000 году, Johab перестал быть общепринятым. [2]
Схемы кодирования KS X 1001 включают EUC-KR (в вариантах на основе ASCII и ISO 646 -KR, последний из которых включает знак валюты вона ( ₩ ) в байте 0x 5C вместо обратной косой черты) и ISO-2022-KR , [7] а также ISO-2022-JP-2 (который также кодирует JIS X 0208 и JIS X 0212 ). Все они имеют тот недостаток, что они назначают коды только для 2350 предварительно составленных слогов хангыль, которые имеют свои собственные кодовые точки KS X 1001 (из 11172 в целом, не считая тех, которые используют устаревший jamo), и требуют от других использовать восьмибайтовые последовательности составов, которые не поддерживаются некоторыми частичными реализациями стандарта. [4]
Кодировка Johab (указанная в приложении 3 к версии стандарта 1992 года) и надмножество EUC-KR, известное как унифицированный код хангыля (UHC, также называемый Windows-949), предоставляют единые коды для всех 11172 слогов хангыля. [7] [6] ISO-2022-KR и Johab используются редко. Некоторые операционные системы расширяют этот стандарт другими неунифицированными способами, например, расширения EUC-KR MacKorean в классической Mac OS и IBM-949 от IBM .
Символ-заполнитель Хангыль используется для введения восьмибайтовых последовательностей композиций Хангыль [8] [9] и для замены отсутствующего элемента (обычно пустого финала) в такой последовательности. [9]
Unicode включает в себя код Wansung Hangul Filler в блок Hangul Compatibility Jamo для двусторонней совместимости, но использует собственную систему (со своими собственными, по-другому используемыми символами-заполнителями) для составления Hangul. Система составления KS X 1001 Hangul не используется в Unicode, а заполнитель отображается просто как пустое пространство; последовательности составления KS X 1001 с использованием современного jamo могут быть сопоставлены с предварительно составленными символами в Unicode. [9] Обычно это не делается с помощью Unified Hangul Code .
Для обеспечения двусторонней совместимости Unicode также включает N-байтовый код Hangul Filler Hangul отдельно в блоках Halfwidth и Fullwidth Forms , называемых «Halfwidth Hangul Filler».
Ниже приведены кодовые таблицы для KS X 1001 в раскладке Wansung. Если дана пара шестнадцатеричных чисел, то меньшее используется при кодировании по GL (0x21-0x7E), как в ISO-2022-KR, когда корейский набор был смещен, а большее используется в более типичном случае кодирования по GR (0xA1-0xFE), как в EUC-KR или UHC. Джохаб изменяет расположение, чтобы кодировать все 11172 кластера хангыль отдельно и по порядку.
Чтобы проиллюстрировать различия в реализации поставщиков, для некоторых символов показаны несколько отображений Unicode. Показаны расширения HangulTalk от Apple для плоскости Wansung (т. е. где оба байта находятся в диапазоне 0xA1-0xFE), но другие диапазоны расширений HangulTalk — нет. Дополнительные коды для составных слогов в Unified Hangul Code и расширения IBM в IBM-949 также не показаны, поскольку оба выходят за рамки плоскости Wansung.
Строки 41 и 94 могут использоваться для целей, определяемых пользователем. [10]
Этот набор содержит знаки препинания и другие символы, за исключением знаков препинания, присутствующих в KS X 1003 (который включен в строку 3). Кодировки, которые объединяют KS X 1001 с однобайтовым ASCII, могут использовать альтернативное сопоставление Unicode с блоком Halfwidth и Fullwidth Forms для обратной косой черты. Сопоставление Unicode волнистого тире (тильда-тире) также различается у разных поставщиков и может быть U+301C (предпочитаемо IBM и Apple) [11] [12] [13] или U+223C (предпочитаемо Microsoft). [14] [15] Сравните похожую, но не идентичную обработку волнистого тире JIS и обработку тильды в следующей строке.
За исключением обратной косой черты, если ниже показаны два сопоставления, первое используется Apple, а второе — Microsoft. [13] [15]
Этот набор содержит дополнительные знаки препинания и символы. Подобно символу тильды в предыдущей строке, Apple и Microsoft используют разные отображения для символа тильды в этой строке (U+02DC у Apple, FF5E у Microsoft), [13] [15] который должен отображаться как приподнятая тильда, тогда как тильда в предыдущей строке должна отображаться в строке на высоте тире. [10] Отображение обведенной точки также отличается. [13] [15]
Знак евро и зарегистрированный товарный знак были добавлены в стандарт в 1998 году, в то время как корейский почтовый знак (㉾) был добавлен в 2002 году. [1] Эти три кодовых точки, как и все еще неиспользуемые кодовые точки, были использованы поставщиками для других, нестандартных целей, например, для маркеров коробочного списка компанией Apple. [16] Microsoft обновила свою реализацию унифицированного кода хангыль, добавив дополнения 1998 года, включая знак евро, но не добавила корейский почтовый знак, когда он был добавлен в стандарт. [17]
Этот набор соответствует KS X 1003 ( вариант ISO 646 для корейского языка, аналогичный набору ASCII ), но в виде двухбайтовых кодов, которым предшествует 0x23 (или 0xA3 в форме GR-invoked (EUC)). Он включает английский алфавит / базовый латинский алфавит , западные арабские цифры и знаки препинания.
Сравните римский набор JIS X 0201 , который отличается включением знака йены вместо знака воны . Сравните третьи строки KPS 9566 и JIS X 0208 , которые следуют макету ISO 646, но включают только буквы и цифры.
Такие кодировки, как EUC-KR и UHC, объединяют KS X 1001 с однобайтовым ASCII или KS X 1003 и, следовательно, используют альтернативные сопоставления Unicode с блоками полуширинных и полноширинных форм для двухбайтовых представлений этих символов.
Этот набор включает в себя современные согласные хангыль, за которыми следуют гласные, оба упорядоченные южнокорейскими обычаями сопоставления, за которыми следуют устаревшие согласные. При использовании по отдельности эти символы сопоставляются с блоком Unicode Hangul Compatibility Jamo и не имеют однозначного соответствия с позиционно-специфичными символами в блоке Hangul Jamo . Сравните со строкой 4 северокорейского KPS 9566. Символ 04-52 — это Hangul Filler (см. выше), используемый при объединении последовательностей.
Этот набор содержит римские цифры и базовую поддержку греческого алфавита , без диакритических знаков или конечной сигмы . Apple включает некоторые дополнительные знаки препинания в этой строке, а также некоторые черные кружки маркеров списка, продолжающиеся с тех, что в строке 6. [16]
Сравните строку 6 KPS 9566 , которая включает те же символы, но в другой компоновке.
Эта строка содержит символы для рисования полей в полуграфическом контексте. Apple также включает некоторые черные круговые маркеры списка. [16]
Эта строка содержит символы единиц как отдельные символы, включая те, которые состоят из нескольких букв. Apple также включает некоторые маркеры списка в кружках, продолжающиеся от тех, что в строке 8. [16]
Сравните и сопоставьте с набором символов подразделений, включенных в строку 8 KPS 9566 .
Этот набор содержит хирагану для записи японского языка . Apple также включает некоторые маркеры списка в скобках, продолжающиеся с тех, что в строке 9. [16]
Сравните строку 10 KPS 9566 , которая использует ту же компоновку. Сравните и сопоставьте строку 4 JIS X 0208 , которая также использует ту же компоновку, но в другой строке.
Этот набор содержит катакану для записи японского языка . Однако японский знак долгой гласной , который используется в тексте катаканы и включен в строку 1 JIS X 0208 , не включен. [20] Apple также включает некоторые маркеры списка в скобках, продолжающиеся с тех, что находятся в строках 9 и 10. [16]
Сравните строку 11 KPS 9566 , которая использует ту же компоновку. Сравните и сопоставьте строку 5 JIS X 0208 , которая также использует ту же компоновку, но в другой строке.
Этот набор содержит современный русский алфавит и не обязательно достаточен для представления других форм кириллического письма . Apple также включает некоторые маркеры черного списка. [16]
Сравните строку 5 KPS 9566 и строку 7 JIS X 0208 , которые используют одинаковую компоновку (но в другой строке).
Кодовые точки для предварительно составленного хангыля включены в непрерывный сортированный блок между кодовыми точками 16-01 и 40-94 включительно. Не все возможные слоговые кластеры включены в этот диапазон. Сравните различный порядок и доступность в KPS 9566 .
Начальные+гласные+конечные слоги 뢨, 썅, 쏀, 쓩 и 쭁 включены, но их начальные+гласные аналоги 뢔, 쌰, 쎼, 쓔 и 쬬 не включены. Это может вызвать проблемы с вводом, поскольку методы ввода должны сначала пройти через начальный+гласный слог, чтобы добраться до начального+гласного+конечного слога (например, ㅎ → 하 → 한).
Те, которые здесь не перечислены, могут быть представлены с использованием восьмибайтовых последовательностей композиций. Всем остальным кластерам modern-jamo присвоены коды в других местах UHC. Всем возможным кластерам modern-jamo присвоены коды Johab.
KS X 1001 кодирует несколько ханджа с несколькими прочтениями несколько раз. Один символ, 樂, кодируется четыре раза. Первые 268 символов (U+F900–U+FA0B) в блоке CJK Compatibility Ideographs соответствуют этим дубликатам.
В таблице ниже значение ячейки первой строки (и прочтение) для каждой ханджи сопоставляется с блоком унифицированных идеограмм CJK ; остальные сопоставляются с блоком совместимых идеограмм CJK.
KS X 1001, начиная с 1992 года, также определяет альтернативную кодировку, известную как Johab. Она представляет слог хангыль как последовательность трех пятибитных значений, разделенных на два 8-битных байта , старший бит идет первым. Старший бит ведущего байта всегда установлен (что позволяет комбинировать его с однобайтовым ASCII или KS X 1003). Эта кодировка также используется для современного джамо из строки 4 KS X 1001, используя значения заполнителей для других компонентов. Кодировка Johab для хангыль показана в таблице ниже. [22]
Johab кодирует остаток KS X 1001, используя ведущие байты, которые не соответствуют начальному jamo (0xE0–0xF9 для ханджа и 0xD9–0xDE [23] для не-ханджа, за исключением слогов хангыль и современного jamo), с байтами хвоста в диапазонах 0x31–0x7E и 0x91–0xFE. [22] Эти коды алгоритмически отображаются из кодовых точек символов KS X 1001, [23] с двумя строками KS X 1001 на ведущий байт (сравните и сопоставьте Shift JIS ).
Кодировка Johab на основе ASCII имеет номер Кодовая страница 1361 от Microsoft. [24] Существуют также другие, определяемые поставщиком варианты Johab; например, IBM определяет один для использования в качестве набора Shift Out с EBCDIC . Этот вариант использует shift in и shift out для переключения между однобайтовой страницей EBCDIC и Johab, использует другую кодировку для не-Hangul символов (используя ведущие байты 0x40–6C с другой раскладкой) и использует ведущие байты 0xD4–DD в качестве определяемой пользователем области , но использует ту же раскладку Johab, что и стандарт 1992 года для символов Hangul в состоянии shift-out. [25] IBM присваивает кодировке Johab на основе EBCDIC с отслеживанием состояния номер Кодовая страница 1364 , [25] а также определяет подмножество этой кодировки, включая меньше символов Hangul, но в той же раскладке, как Кодовая страница 933. [ 26]
Некоторые другие поставщики, такие как Samsung или GoldStar (теперь LG ), использовали другие кодировки «Johab», в которых сопоставления пятибитных кодов с jamo отличались от приведенных ниже, следовательно, они не были совместимы со стандартом Johab 1992 года. [af] Приведенная ниже таблица соответствует стандарту 1992 года, а также использованию IBM.
Это N-байтовый код Хангыль, [5] как указано в KS C 5601-1974 и в приложении 4 к KS C 5601–1992. Вторая половина кодовой страницы IBM 1040 [27] является надмножеством этого, назначая символы ¢¬\~
(хотя и не £
) тем же позициям, что и в кодовой странице 1041 , в то время как нерасширенный N-байтовый Хангыль (кроме заменяющей графики кода управления C0 в некоторых контекстах использования, общих с IBM-1040) является кодовой страницей 891 . [28] Символ 0x40/0xC0 является заполнителем Хангыль (см. выше), используемым при объединении последовательностей.
Подобно своему японскому аналогу JIS C 6220 (JIS X 0201), N-байтовый код хангыль может использоваться как 7-битное кодирование с распределением символов в диапазоне от 0x40 до 0x7C. [5] На приведенной ниже диаграмме показан код в 8-битной среде с установленным старшим битом (т. е. от 0xC0 до 0xFC), как он используется, например, в кодовой странице 891 или 1040.