Создание кодировки

Функция

Определение оператора создания в БД новой кодировки.

Спецификация
   
< создание кодировки >::=
CREATE [IF NOT EXISTS |OR REPLACE] CHARACTER SET имя кодировки
[WINDOWS_CODE код Windows-кодировки]
[{NONEUC [WIDTH значение]} | EUC | UTF8]
[[PLAN номер плана] PAGE номер страницы]
EXTERNAL (тело кодовой таблицы)
< код Windows-кодировки >::=
< номер плана >::=
< номер страницы >::=
< тело кодовой таблицы >::=
Синтаксические правила
  1. Опция OR REPLACE заставляет удалять существующую в БД кодовую таблицу и создавать её под тем же именем, но с другими параметрами.

  2. Опция IF NOT EXISTS отменяет выполнение оператора, если указанная кодовая таблица уже существует в БД.

  3. Одновременное использование опций IF NOT EXISTS и OR REPLACE запрещено.

  4. Опции < номер плана > и < номер страницы > используются только при задании MBCS-кодировок.

  5. < Тело кодовой таблицы > – массив из 1536 байт. Для однобайтовой кодировки включает в себя следующие массивы: CTYPE (512 байт), CASE (256 байт), WEIGHTS (256 байт), TO_UNICODE (512 байт):

    • CTYPE – имеет смысл только для однобайтовых кодировок и представляет собой массив свойств символов кодировки (пример свойств символа – число, буква или знак; в верхнем/нижнем регистре и т.п.);

    • CASE – имеет смысл только для однобайтовых кодировок и представляет собой массив преобразований символов в верхний/нижний регистр;

    • WEIGHTS – имеет смысл только для однобайтовых кодировок и представляет собой массив весов символов кодировки;

    • TO_UNICODE – имеет смысл только для однобайтовых кодировок и представляет собой таблицу преобразования символов кодировки в UNICODE-символы (массивы для обратного преобразования из кодировки в UNICODE автоматически создаются на этапе загрузки кодировки).

  6. Для MBCS-кодировки можно указывать следующие типы кодировок:

    • EUC (по умолчанию) (примеры подобных кодировок: SHIFTJIS, JIS0208, JIS0201, HANGUL, JOHAB, KSC5601, BIG5. В ОС MS DOS: кодировки: 932, 936, 949, 950);

    • NONEUC – кодировка не совместима с EUC-овскими (примеры подобных кодировок: GB 2312-80, GB 12345-90, GB 7589-87, GB 7590-87, GB 8565-89, JIS0212, KSX1001, CNS11643);

    • UTF8 – UTF-8 представление символов.

  7. Опции PLAN и PAGE задают, соответственно, номер плана и номер страницы для CNS11643-кодировки и обобщенной GB-кодировки, состоящей из GB 2312-80, GB 12345-90, GB 7589-87, GB 7590-87, GB 8565-89. Если PLAN не указан, считается, что он равен нулю.

  8. Опция WINDOWS_CODE задает номер кодовой страницы для Windows-платформ.

Примечание

После создания БД в обычном режиме по умолчанию задана кодировка, использующая таблицу из 127 символов. Существует возможность изменить кодировку по умолчанию для всей БД (см. пункт «Кодировка соединения по умолчанию»).

Пример

Создание однобайтовой кодировки:

CREATE CHARACTER SET CP866 WINDOWS_CODE 866 EXTERNAL(
hex('200020002000200020002000200020002000280028002800280028002000200020
00200020002000200020002000200020002000200020002800280028002800080010001
00010001000100010001000100010001000100010001000100010000400040004000400
04000400040004000400040010001000100010001000100010000101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101
01010101010101100010001000100010001000020102010201020102010201020102010
20102010201020102010201020102010201020102010201020102010201020102010201
10001000100010002000010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101
01010102010201020102010201020102010201020102010201020102010201020102011
00010001000100010001000100010001000100010001000100010001000100010001000
10001000100010001000100010001000100010001000100010001000100010001000100
01000100010001000100010001000100010001000100010000201020102010201020102
01020102010201020102010201020102010201020101010201010102010101020101010
20110001000100010001000100010000800'),
hex('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20
2122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F406162636
465666768696A6B6C6D6E6F707172737475767778797A5B5C5D5E5F6041424344454647
48494A4B4C4D4E4F505152535455565758595A7B7C7D7E7FA0A1A2A3A4A5A6A7A8A9AAA
BACADAEAFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF808182838485868788898A8B8C8D8E
8FB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D
2D3D4D5D6D7D8D9DADBDCDDDEDF909192939495969798999A9B9C9D9E9FF1F0F3F2F5F4
F7F6F8F9FAFBFCFDFEFF'),
hex('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20
2122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434
445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F6061626364656667
68696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8
B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAE
AFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D
2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5
F6F7F8F9FAFBFCFDFEFF'),
hex('00000100020003000400050006000700080009000A000B000C000D000E000F0010
001100120013001400150016001700180019001A001B001C001D001E001F00200021002
20023002400250026002700280029002A002B002C002D002E002F003000310032003300
3400350036003700380039003A003B003C003D003E003F0040004100420043004400450
046004700480049004A004B004C004D004E004F00500051005200530054005500560057
00580059005A005B005C005D005E005F006000610062006300640065006600670068006
9006A006B006C006D006E006F0070007100720073007400750076007700780079007A00
7B007C007D007E007F0010041104120413041404150416041704180419041A041B041C0
41D041E041F0420042104220423042404250426042704280429042A042B042C042D042E
042F0430043104320433043404350436043704380439043A043B043C043D043E043F049
125922593250225242561256225562555256325512557255D255C255B25102514253425
2C251C2500253C255E255F255A25542569256625602550256C256725682564256525592
55825522553256B256A2518250C25882584258C25902580254004410442044304440445
0446044704480449044A044B044C044D044E044F040104510404045404070457040E045
E04B0001922B7001A221621A400A025A000')
);

Примечание

При копировании примера для выполнения необходимо удалить символы перевода строки.