Введение
Японская однобайтовая кодировка
JIS X 0201, японский промышленный стандарт, разработанный в 1969 году, стал первым широко используемым японским электронным набором символов. Изначально набор символов был известен как JIS C 6220 до реформы классификации JIS. Существовали две формы кодировки: 7-битная и 8-битная, при этом 8-битная форма была доминирующей до появления Unicode (в частности, UTF-8), который её вытеснил. Полное название стандарта – кодированные 7- и 8-битные наборы символов для обмена информацией (7ビット及び8ビットの情報交換用符号化文字集合). Первые 96 кодов представляют собой вариант ISO 646, в основном соответствующий ASCII с некоторыми отличиями, а следующие 96 кодов – фонетические японские символы катакана. Поскольку кодировка не предусматривает возможности отображения хираганы или кандзи, она позволяет выражать только упрощенный письменный японский язык. Тем не менее, этого упрощения достаточно для представления всего спектра звуков языка. В 1970-х годах это было приемлемо для таких носителей, как компьютерные терминалы в текстовом режиме, телеграммы, чеки или другие данные, обрабатываемые в электронном виде. JIS X 0201 был заменен последующими кодировками, такими как Shift JIS, объединяющей этот стандарт и JIS X 0208, а затем и Unicode.
История
Консультативный комитет Международного Телефонического и Телеграфного Союза (CCITT) ввел в качестве международного стандарта код Международного Телеграфного Алфавита № 2 (ITA2), представлявший собой 5-битное латинское кодирование. Большинство стран разработали собственные национальные стандарты на его основе. В Японии Агентство науки и технологий (AIST) стандартизировало его как 6-битные коды символов JIS C 0803 1961 (расположение клавиш и коды для телетайпов), включавшие символы катакана. Однако этот стандарт не соответствовал отраслевым требованиям из-за небольшого размера таблицы символов и непрактичной организации кодов. AIST рассматривало возможность создания практичной кодировки символов для замены различных кодов, используемых в Японии. В 1963 году ISO представила проект ISO R 646 (6- и 7-битные кодированные наборы символов для обмена информацией). AIST поручило Японскому обществу обработки информации (IPSJ) изучить возможность объединения ISO R 646 и отображения символов катакана. IPSJ сформировала комитет по стандартизации кодов. Комитет не принял 6-битную версию проекта ISO, поскольку набор символов катакана не помещался в его таблицу символов. В ранних проектах JIS маленькие символы катакана отображались рядом с обычными символами катакана. Это считалось удобным для сортировки в порядке годзюон (JIS X 0208:1978 выбрал этот порядок). Некоторые члены комитета критиковали это решение, поскольку оно могло усложнить конструкцию клавиатур, предназначенных только для обычных символов катакана. В более позднем проекте маленькие символы катакана были сопоставлены с позициями 0xA7–0xAF. В проекте ISO 1964 года позиции 0x24 и 0x5c были зарезервированы для символов первой и второй валюты, которые должны были быть назначены каждой страной. Однако использование локализованных символов валюты в международных коммуникациях считалось слишком рискованным. Комитет ISO рассматривал два варианта: использовать универсальный символ валюты (¤) или закрепить за долларом ($) и фунтом (£) постоянные позиции. Было решено, что доллар будет назначен позиции 0x24, а фунт – позиции 0x23. Последний не требовался в странах, где не использовался фунт стерлингов. Комитет JIS решил поместить символ йены (¥) в позицию 0x5c (одну из позиций для национального использования). Стандарт JIS C 6220 (коды для обмена информацией, 情報交換用符号) был опубликован в 1969 году. В 1987 году его номер был изменен на JIS X 0201 в связи с реформой категорий JIS, а в редакции 1990 года название было изменено на 7- и 8-битные кодированные наборы символов для обмена информацией (7ビット及び8ビットの情報交換用符号化文字集合). Набор символов JIS X 0201 получил широкое распространение в Японии. В 1973 году была создана общенациональная банковская система передачи данных (全国銀行データ通信システム) – крупнейшая в Японии система перевода средств. Для обмена сообщениями о транзакциях между банками использовался поднабор JIS X 0201. Система использовалась до 2018 года, после чего была заменена на ZEDI (общенациональная система электронного обмена банковскими данными, 全銀EDIシステム), поддерживающую символы хирагана и кандзи. В 1978 году был разработан 2-байтный набор символов JIS C 6226 (JIS X 0208) для представления символов хирагана и кандзи. Он также включал символы катакана, но их коды и расположение отличались от JIS X 0201. Производители компьютеров разработали собственные расширения JIS X 0208 для обеспечения совместимости с JIS X 0201. В 1982 году были разработаны схема кодирования Microsoft Kanji (Codepage 932 MS DOS) и SJC26 от Digital Research (для японской версии CP/M 86), которые объединяли однобайтовую кодировку JIS X 0201 и двухбайтовую кодировку JIS X 0208 без использования управляющих символов смены кодировки. Они получили название Shift JIS и стали отраслевым стандартом для персональных компьютеров.
Подробности реализации
Первая половина (римский набор) стандарта JIS X 0201 представляет собой японский вариант ISO 646, фактически являющийся ASCII, в котором символ обратной косой черты (\) и тильда (~) заменены символом йены (¥) и линией над символом (‾). Вторая половина (набор кана) состоит главным образом из катаканы. Контрольные символы определены в JIS X 0211. В 7-битном формате символ смены регистра (0x0E) переключает на набор кана, а символ возврата в исходный регистр (0x0F) – на римский набор. В 8-битном формате, представленном в таблице ниже, байты с установленным старшим битом (то есть 0x80–0xFF) используются для набора кана, а байты с не установленным старшим битом (то есть 0x00–0x7F) – для всего остального. Другие названия, используемые специально для 7-битного римского набора, включают "JISCII", "JIS Roman", "ISO646 JP", "JIS C6220 1969 ro", "Japan 7 Bit Latin" и "ISO IR 14". Аналогичная проблема возникает с управляющими символами строковых литералов в языке программирования C, например, в printf("Hello, world.¥n");.