Публикации
Наборы символов в RUSMARC
О.Н.Жлобинская
Российская национальная библиотека
Для обеспечения обмена данными в RUSMARC, как и в UNIMARC, используются стандарты ISO на наборы символов. Формат определяет, что маркер записи, справочник, индикаторы, идентификаторы подполя и кодовые обозначения, указанные в записи, должны кодироваться с использованием управляющих функций и графических символов по ISO 646 (IRV). Этот набор данных (ISO 646) рассматривается как основной набор (набор по умолчанию) для записи. В случае, если в записи требуется множество наборов символов, используется техника расширения кода, указанная в ISO 2022
Наборы символов, используемые в записи, указываются в поле 100, подполе $a: позиции символов 26-29 определяют основные наборы, позиции символов 30-33 – дополнительные наборы символов. При этом используемые наборы символов должны быть зарегистрированы ISO, но также могут быть предметом договора между участниками обмена.
Подробная информация о наборах символов, используемых в UNIMARC, приведена в Приложении J Руководства по UNIMARC.
В записях RUSMARC может использоваться 7-битная или 8-битная система кодирования символов. Условия и правила использования наборов символов соответствуют международному стандарту ISO 2022. Кроме того, может использоваться и 16-битная система кодирования символов в соответствии с ISO 10646
Текст ISO 2022, к сожалению, доступен только за деньги, но существует его полный бесплатный аналог ECMA-35. Кроме того, существует стандарт ГОСТ 27466-87 Наборы символов в 7- и 8-битных кодах. Методы расширения кодов.
Согласно стандарту вводятся понятия "управляющий" и "графический символ" (т.е. отображаемый), а все пространство символов разбивается на области управляющих и графических символов
7-битная кодовая таблица состоит из 8 столбцов и 16 строк (всего 128 символов). Столбцы нумеруются от 00 до 08, строки - от 00 до 15. Позиция символа в таблице обозначается x/y, где x - номер столбца, y - номер строки. Область управляющих символов - столбцы 00 и 01 (позиции 00/00 - 01/15), область графических символов - столбцы 02-07 (позиции 02/00 - 07/15). Позиции 02/00 и 07/15 занимают соответственно символы SPACE (пробел) и DELETE (удаление). Таким образом, 7-битный набор символов включает 32 управляющих символа, 94 графических символа, символы SPACE и DELETE
В 8-битной таблице пространство из 28=256 символов разделено на области:
CL (Control Left) - 00/00 - 01/15
GL (Graphic Left) - 02/00 - 07/15
СR (Control Right) - 08/00 - 09/15
GR (Graphic Right) - 10/00 - 15/15
Использование кодовых таблиц предполагает предварительное назначение (определение, designation) наборов символов, которые будут использоваться, а затем вызов (загрузка, invocation) одного из заранее определенных наборов в качестве рабочего (или текущего). И в 7-битной, и в 8-битной системе одновременно могут быть назначены 2 набора управляющих символов и 4 набора графических символов. Эти наборы символов называются соответственно C0 / С1, G0 / G1 / G2 / G3
Рабочими (текущими) в 7-битной таблице одновременно могут быть 2 набора управляющих символов и один набор графических символов. В 8-битной таблице одновременно рабочими (текущими) могут быть 2 набора управляющих символов и 2 набора графических символов (изначально рабочими являются наборы G0 и G1). Предусмотрен механизм переключения - вызова одного из наборов Gn на место GL или GR, т.е. любой из четырех предварительно назначенных наборов можно сделать рабочим
Таким образом, можно одновременно задать до четырех различных наборов символов и переключаться между ними специальными кодами
Далее, каждый из наборов графических символов G0/G1/G2/G3 тоже можно сменить на дополнительный набор с помощью специальных «назначателей» (designators) - ESC-последовательностей. Формат этих последовательностей также описан в ISO 2022.
Наборы управляющих символов в RUSMARC
Наборы управляющих символов C0 и C1 в RUSMARC (как и в UNIMARC) являются фиксированными. Назначать и вызывать их в записи не требуется
Набор C0 – это набор 32 контрольных символов, определенных в ISO 646. Этот набор содержит основные управляющие символы, а также разделитель подполей, разделитель подполей, разделитель записей. И в 7-битной, и в 8-битной таблице набор C0 располагается в столбцах 00-01
Набор C1 – набор управляющих символов из числа определенных в ISO 6630 (Documentation—Bibliographic control characters. Документация - Символы библиогрфического контроля). В настоящее время в RUSMARC (как и в UNIMARC) допущены к использованию только следующие символы из этого набора:
NSB ‘Non-sorting character(s) beginning’ - (позиция 08/08) – начало строки несортируемых символов,
NSE ‘Non-sorting character(s) ending’ (позиция 08/09) – конец строки несортируемых символов,
PLD ‘Partial Line Down’
PLU ‘Partial Line Up’
Символы NSB и NSE определяют строки символов, не учитываемые при сортировке. NSB вставляется в данные непосредственно перед символами, не учитываемыми при сортировке; NSE вставляется в данные непосредственно после несортируемых символов.
При выгрузке записи в формат ISO 2709 эти символы заменяются соответственно на символы 88Н и 89Н.
В 7-битной таблице символы набора C1 представлены двумя символами ‘ESC F’, где ESC – это символ, занимающий позицию 1/11 в управляющем наборе C0, а F – это битовая комбинация битов из столбцов 04 и 05. Битовые комбинации F, ассоциированные с каждой из функций, предусмотренных в ISO 6630, определены ISO при регистрации набора (см. соотв. раздел).[ NB: в 7-битной среде ‘ESC F’ замещает битовые комбинации кодовой таблицы функций ISO 6630.]
В 8-битной записи набор C1 располагается в столбцах 08 и 09, и функции управляющих символов представлены их битовыми комбинациями в кодовой таблице
Наборы графических символов в RUSMARC
Как уже говорилось, одновременно можно определить четыре набора символов: G0, G1, G2, G3
Набор G0 в RUSMARC – всегда ISO 646. Все символы маркера записи, справочника, кодированных полей и подполей, индикаторы полей и коды подполей – это всегда символы, определенные в ISO 646. Таким образом, запись RUSMARC всегда начинается с набора символов ISO 646 в качестве рабочего набора
Кроме того, в записи одновременно можно назначить еще от одного до трех наборов символов – G1, G2, G3
Основные и дополнительные наборы символов, используемые в записи, определяются в поле 100$a (двухсимвольные коды в позициях 26-33):
позиции 26-27 – набор G0,
позиции 28-29 – набор G1,
позиции 30-31 – набор G2,
позиции 32-33 – набор G3
Если набор G1 не нужен, позиции 28-29 содержат символы пробела: '##'
Если дополнительные наборы символов не требуются, позиции 30-33 содержат символы пробела: "####"
Используются следующие двухсимвольные коды:
01 = ISO 646,
версия IRV (основной латинский набор)
02 = ISO регистрация #37 (основной кириллический набор)
03 = ISO 5426 (расширенный латинский набор)
04 = ISO DIS 5427 (расширенный кириллический набор)
05 = ISO 5428 (греческий набор)
06 = ISO 6438 (набор кодированных африканских символов)
07 = ISO 10586 (набор символов грузинского алфавита)
08 = ISO 8957 (набор символов иврита) таблица 1
09 = ISO 8957 (набор символов иврита) таблица 2
10 [Зарезервировано]
11 = ISO 5426-2 (латинские символы, используемые в редких европейских языках и
устаревших типографиях)
50 = ISO 10646 (Unicode)
79 = Code Page 866
89 = WIN 1251
99 = KOI-8
Набор символов ISO 10646, будучи 16-битным набором символов, содержит все необходимые символы. Если позиции 26-27 содержат код "50", то он используется для наборов управляющих символов C0, C1, а также для наборов графических символов G0, G1, G2, G3. Никакого дополнительного назначения не требуется. Позиции 28-33 содержат символы пробелов.
Если в записи используется не более 4 наборов символов, информации в поле 100 достаточно для того, чтобы назначить необходимые наборы. В дальнейшем эти наборы могут быть вызваны по мере необходимости с помощью специальных команд-переключателей. [Необходимо заметить, что маркер, справочник, поля кодированной информации всегда записаны в ISO 646, поэтому назначение наборов G1, G2, G3 всегда происходит до того, как какие-либо дополнительные наборы символов встречаются в записи.]
7-битная кодовая таблица
В 7-битной записи 4 предварительно назначенные набора символов вызываются с помощью следующих переключателей (locking shifts), определенных в ISO 2022:
Акроним |
Полное название |
Комбинация(и) битов |
Вызываемый набор |
SI |
Shift in |
0/15 |
G0 |
SO |
Shift out |
0/14 |
G1 |
LS2 |
Locking shift two |
ESC 6/14 |
G2 |
LS3 |
Locking shift three |
ESC 6/15 |
G3 |
Shift In – переключение на стандартный набор символов
Shift Out – переключение на альтернативный набор символов
Эти команды являются "блокирующими", т.е. вызванный набор остается рабочим до тех пора, пока соответствующей shift-функцией не будет вызван другой набор символов
Поскольку набор G0 (ISO 646) всегда является рабочим набором любой записи, переход Shift_In к этому набору применяется только в том случае, если до этого был сделан переход на один из наборов G1, G2 или G3. Кроме того, набор G0 (ISO 646) должен быть рабочим в конце каждого подполя и поля, так как обработка последующих кодов подполей или справочника требует ISO 646 в качестве рабочего. Для этого до разделителя поля или разделителя подполя должна быть включена команда Shift_In
Кроме того, в 7-битной системе допускается единичный вызов отдельных символов из набора G2 или G3. В этом случае вызов набора символов действует только на один символ, и после этого автоматически рабочим набором вновь становится тот набор, который был рабочим до команды "Single Shift"
Акроним |
Полное название |
Комбинация(и) битов |
Вызываемый набор |
SS2 |
Single shift two |
ESC 04/14 |
G2 |
SS3 |
Single shift three |
ESC 04/15 |
G3 |
Пример:
200: 1 $aLa Parole int00/14é00/15rieure$e[Recueil]$fGabriel Bergounioux
В этой записи набор символов ISO 5426 (расширенный латинский набор) был определен в качестве набора G1, и для того, чтобы включить в запись символ é из этого набора, используются команды Shift-Out и Shift-In
Пример:
200: 1 $aLa Parole int01/11 04/14érieure$e[Recueil]$fGabriel Bergounioux
В этой записи набор символов ISO 5426 (расширенный латинский набор) был определен в качестве набора G2, и для того, чтобы включить в запись символ é из этого набора, используется команда Single Shift Two
8-битная кодовая таблица
В 8-битной записи 4 предварительно назначенные набора символов вызываются с помощью следующих переключателей (locking shifts), определенных в ISO 2022:
Акроним |
Полное название |
Комбинация(и) битов |
Вызываемый набор |
Столбцы, подвергаемые изменению |
LS0 |
Locking Shift Zero |
00/15 |
G0 |
02-07 |
LS1 |
Locking Shift One |
00/14 |
G1 |
02-07 |
LS1R |
Locking Shift One Right |
ESC 07/14 |
G1 |
10-15 |
LS2 |
Locking Shift Two |
ESC 06/14 |
G2 |
02-07 |
LS2R |
Locking Shift Two Right |
ESC 07/13 |
G2 |
10-15 |
LS3 |
Locking Shift Three |
ESC 06/15 |
G3 |
02-07 |
LS3R |
Locking Shift Three Right |
ESC 07/12 |
G3 |
10-15 |
Эти команды являются "блокирующими", т.е. вызванный набор остается рабочим до тех пор, пока соответствующей shift-функцией не будет вызван другой набор символов
 
Первоначально рабочим набором любой записи всегда является набор G0 (ISO 646) в столбцах 02-07, и набор G1 в столбцах 10-15, поэтому переключение на эти наборы применяется только в том случае, если ранее в этих столбцах были загружены наборы G2 или G3.
В конце поля рабочими должны быть наборы G0 (ISO 646) и набор G1, определенный в поле 100 (поз. 28-29), поэтому в том случае, если внутри поля был осуществлен переход на другие наборы символов, обратное переключение необходимо осуществить до разделителя поля или разделителя подполя
Команды переключения, которые не являются блокирующими, в 8-битной среде не применяются
Пример:
200: 1 $aLa Parole intérieure$e[Recueil]$fGabriel Bergounioux
В этой записи набор символов ISO 5426 (расширенный латинский набор) был назначен в качестве набора G1 (поле 100$a поз.28-29 = 03). В 8-битной среде дополнительное переключение не требуется
Пример:
300: ##$aПер. изд.: Uro : En reise i det mod. selvet / Finn Sk01/11 07/13å01/11 07/14rderud. - Oslo, 2000
G0 - основной латинский набор (ISO 646),
G1 - основной кириллический набор (ISO регистрация #37),
G2 - расширенный латинский набор (ISO 5426)
100 $a/26-33 = 010203##
Обращение к символам основного латинского и кириллического набора не требует дополнительных указаний. Символ å находится в расширенном латинском наборе, который вызывается в столбцах 10-15 командой Locking Shift Two Right (ESC 7/13), временно замещая основную кириллицу. После того, как необходимый символ введен, возвращаемся к основному кириллическому набору с помощью команды Locking Shift One Right (ESC 7/14)
Пример:
200: 1 $aLa Parole int01/11 07/13é01/11 07/14rieure$e[Recueil]$fGabriel Bergounioux
G1 - основной кириллический набор,
G2 - набор символов ISO 5426 (расширенный латинский набор)
Для того, чтобы включить в запись символ (é) из этого набора, используется команда Locking Shift Two Right (ESC 7/13), который загружает набор символов G2 на место G1. Затем в столбцах 10-15 вновь вызывается набор G1 с помощью команды Locking Shift One Right (ESC 7/14)
Дополнительные наборы графических символов
Итак, в поле 100 можно определить до 4 наборов графических символов, и затем по мере необходимости вызывать их в записи. Может возникнуть ситуация, когда 4 наборов окажется недостаточно. В таких случаях используется техника расширения кода, указанная в ISO 2022. Дополнительные наборы символов можно вызывать вместо наборов, указанных в поле 100, с помощью специальной управляющей ESC последовательности, имеющей вид 'ESC I F'.
Здесь элемент переключающей последовательности 'I' - это один или несколько символов, которые задают набор Gn следующим образом:
Однобайтная кодировка |
Многобайтная кодировка |
Назначаемый набор Gn |
2/8 или 2/12 |
2/4 2/8 или 2/4 2/12 |
G0 |
2/9 или 2/13 |
2/4 2/9 или 2/4 2/13 |
G1 |
2/10 или 2/14 |
2/4 2/10 или 2/4 2/14 |
G2 |
2/11 или 2/15 |
2/4 2/11 или 2/4 2/15 |
G3 |
Финальный символ 'F' указывает назначаемый набор графических символов. Это комбинация битов из столбцов 4-7, назначаемая ISO при регистрации набора символов. Финальные символы для наборов, принятых для использования в UNIMARC, приведены ниже
F |
Набор графических символов |
4/0 |
ISO 646 (IRV), основной латинский набор |
5/0 |
ISO 5426, расширенный латинский набор |
4/14 |
ISO регистрация #37, основной кириллический набор |
5/1 |
ISO DIS 5427, расширенный кириллический набор |
5/3 |
ISO 5428, греческий набор |
4/13 |
ISO 6438, набор кодированных африканских символов |
Таким образом, элемент I определяет, какой набор будет заменен, а элемент F – какой набор назначается на его место. Если в записи требуется пятый набор символов, его необходимо сначала назначить на место набора Gn с помощью ESC-последовательности, а затем вызвать с помощью Shift-механизма, описанного ранее. Если в поле был назначен и загружен дополнительный набор символов, до конца поля необходимо вернуть оригинальный набор Gn, заданный в поле 100, с помощью соответствующей ESC-последовательности. На выходе из поля наборы символов G0, G1, G2 и G3 должны быть такими, как определено в поле 100
Пример
454 #0$1700#0$aКсенофонт$150010$a01/11 02/09 05/03 01/11 07/14Άπ ομνημονευματα01/11 02/09 04/14 01/11 07/14
01/11 02/09 05/03 - назначение греческого набора в качестве G1
01/11 07/14 - вызов назначенного набора G1 в столбцах 10-15
01/11 02/09 04/14 - обратное назначение основного кириллического набора в качестве G1
01/11 07/14 - вызов назначенного набора G1 в столбцах 10-15
Запись в этом примере описывает болгарский перевод документа на греческом языке, язык каталогизации - русский. В поле 100 указаны следующие наборы символов (01020304):
G0 ISO 646, основной латинский набор
G1 ISO, регистрация #37, основной кириллический набор
G2 ISO 5426, расширенный латинский набор
G3 ISO DIS 5427, расширенный кириллический набор
Когда в поле требуется греческий набор символов для включения оригинального заглавия на греческом языке, этот набор сначала назначается на место набора G1 (с помощью управляющей последовательности ESC 2/9 5/3), затем загружается в столбцах 10-15 с помощью управляющей последовательности ESC 7/14). Прежде чем выйти из поля, на место G1 вновь назначается основной кириллический набор (с помощью ESC 2/9 4/14), и он вновь загружается в столбцах столбцах 10-15 (с помощью ESC 7/14)
Таким образом, в случае 7-битной и 8-битной кодировки в записи RUSMARC можно определить до 4 наборов графических символов, и затем по мере необходимости вызывать их в записи. В случае, если 4 наборов окажется недостаточно, техника расширения кода, указанная в ISO 2022, позволяет переключиться на дополнительный набор символов и ввести в запись символы из другой кодовой таблицы. В случае использования UNICODE, этот набор символов содержит все необходимые символы, используется для наборов управляющих символов C0, C1, а также для наборов графических символов G0, G1, G2, G3, и никакого дополнительного назначения наборов символов не требуется