UTF-EBCDIC - UTF-EBCDIC
UTF-EBCDIC это кодировка символов используется для представления Unicode символы. Это должно быть EBCDIC -дружелюбны, так что устаревшие приложения EBCDIC на мэйнфреймы может обрабатывать символы без особого труда. Его преимущества для существующих систем на основе EBCDIC аналогичны UTF-8 преимущества для существующих ASCII -системы. Подробная информация о UTF-EBCDIC описана в техническом отчете Unicode №16.
Чтобы создать версию серии кодовых точек Unicode в кодировке UTF-EBCDIC, сначала применяется кодировка на основе UTF-8 (известная в спецификации как UTF-8-Mod) (создавая то, что в спецификации называется последовательностью I8). Основное отличие этой кодировки от UTF-8 заключается в том, что она позволяет использовать кодовые точки Unicode от U + 0080 до U + 009F ( Коды управления C1 ) для представления в виде одного байта и, следовательно, для последующего преобразования в соответствующие управляющие коды EBCDIC. Для этого UTF-8-Mod использует 101XXXXX вместо 10XXXXXX в качестве формата завершающих байтов в многобайтовой последовательности. Поскольку он может содержать только 5 бит, а не 6, кодирование UTF-8-Mod кодовых точек выше U + 009F обычно больше, чем кодирование UTF-8.
Преобразование UTF-8-Mod оставляет данные в формате на основе ASCII (например, U + 0041 "A" по-прежнему кодируется как 01000001), поэтому каждый байт пропускается через обратимую (однозначную) таблицу поиска. для создания окончательной кодировки UTF-EBCDIC. Например, 01000001 в этой таблице соответствует 11000001; таким образом, кодировка UTF-EBCDIC для U + 0041 (Unicode "A") равна 0xC1 (EBCDIC "A").
Эта форма кодирования используется редко, даже на мэйнфреймах на основе EBCDIC, для которых она была разработана. IBM Операционные системы мэйнфреймов на основе EBCDIC, такие как z / OS, обычно используют UTF-16 для полной поддержки Unicode. Например, DB2 UDB, КОБОЛ, PL / I, Ява и IBM XML набор инструментов поддерживает UTF-16 на мэйнфреймах IBM.
Макет кодовой страницы
В UTF-EBCDIC 160 символов с однобайтовой кодировкой (по сравнению со 128 в UTF-8). Как видно, однобайтовая часть похожа на IBM-1047 вместо IBM-37 из-за расположения квадратных скобок. CCSID 37 имеет [] в гексагоне BA и BB вместо AD и BD соответственно.
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ | NUL 0000 | SOH 0001 | STX 0002 | ETX 0003 | ST 009C | HT 0009 | SSA 0086 | DEL 007F | EPA 0097 | RI 008D | SS2 008E | VT 000B | FF 000C | CR 000D | ТАК 000E | SI 000F |
1_ | DLE 0010 | DC1 0011 | DC2 0012 | DC3 0013 | OSC 009D | LF 000A | BS 0008 | ЕКА 0087 | МОЖЕТ 0018 | ЭМ 0019 | PU2 0092 | SS3 008F | FS 001C | GS 001D | RS 001E | нас 001F |
2_ | PAD 0080 | ПРЫГАТЬ 0081 | Аденома простаты 0082 | NBH 0083 | IND 0084 | NEL 0085 | ETB 0017 | ESC 001B | HTS 0088 | HTJ 0089 | СУДС 008A | PLD 008B | PLU 008C | ENQ 0005 | ACK 0006 | BEL 0007 |
3_ | DCS 0090 | PU1 0091 | SYN 0016 | СТС 0093 | CCH 0094 | МВт 0095 | СПА 0096 | EOT 0004 | SOS 0098 | SGCI 0099 | SCI 009A | CSI 009B | DC4 0014 | НАК 0015 | ВЕЧЕРА 009E | SUB 001A |
4_ | SP 0020 | • +00 | • +01 | • +02 | • +03 | • +04 | • +05 | • +06 | • +07 | • +08 | • +09 | . 002E | < 003C | ( 0028 | + 002B | | 007C |
5_ | & 0026 | • + 0А | • + 0B | • + 0C | • + 0D | • + 0E | • + 0F | • +10 | • +11 | • +12 | ! 0021 | $ 0024 | * 002A | ) 0029 | ; 003B | ^ 005E |
6_ | - 002D | / 002F | • +13 | • +14 | • +15 | • +16 | • +17 | • +18 | • +19 | • + 1А | • + 1B | , 002C | % 0025 | _ 005F | > 003E | ? 003F |
7_ | • + 1С | • + 1D | • + 1E | • + 1 этаж | 2 0000 | 2 0020 | 2 0040 | 2 0060 | 2 0080 | ` 0060 | : 003A | # 0023 | @ 0040 | ' 0027 | = 003D | " 0022 |
8_ | 2 00A0 | а 0061 | б 0062 | c 0063 | d 0064 | е 0065 | ж 0066 | грамм 0067 | час 0068 | я 0069 | 2 00C0 | 2 00E0 | 2 0100 | 2 0120 | 2 0140 | 2 0160 |
9_ | 2 0180 | j 006A | k 006B | л 006C | м 006D | п 006E | о 006F | п 0070 | q 0071 | р 0072 | 2 01A0 | 2 01C0 | 2 01E0 | 2 0200 | 2 0220 | 2 0240 |
A_ | 2 0260 | ~ 007E | s 0073 | т 0074 | ты 0075 | v 0076 | ш 0077 | Икс 0078 | у 0079 | z 007A | 2 0280 | 2 02A0 | 2 02C0 | [ 005B | 2 02E0 | 2 0300 |
B_ | 2 0320 | 2 0340 | 2 0360 | 2 0380 | 2 03A0 | 2 03C0 | 2 03E0 | 3 0000 | 3 0400 | 3 0800 | 3 0C00 | 3 1000 | 3 1400 | ] 005D | 3 1800 | 3 1C00 |
C_ | { 007B | А 0041 | B 0042 | C 0043 | D 0044 | E 0045 | F 0046 | грамм 0047 | ЧАС 0048 | я 0049 | 3 2000 | 3 2400 | 3 2800 | 3 2C00 | 3 3000 | 3 3400 |
D_ | } 007D | J 004A | K 004B | L 004C | M 004D | N 004E | О 004F | п 0050 | Q 0051 | р 0052 | 3 3800 | 3 3C00 | 4 4000 | 4 8000 | 4 10000 | 4 18000 |
E_ | \ 005C | 4 20000 | S 0053 | Т 0054 | U 0055 | V 0056 | W 0057 | Икс 0058 | Y 0059 | Z 005A | 4 28000 | 4 30000 | 4 38000 | 5 40000 | 5 100000 | |
F_ | 0 0030 | 1 0031 | 2 0032 | 3 0033 | 4 0034 | 5 0035 | 6 0036 | 7 0037 | 8 0038 | 9 0039 | APC 009F |
Письмо Число Пунктуация Символ Другой Неопределенный
Синие ячейки, содержащие большое однозначное число, являются начальными байтами для последовательности из такого количества байтов. Номер точки шестнадцатеричного кода без жирного шрифта, показанный в ячейке, является наименьшим значением символа, закодированным с использованием этого начального байта. Это значение может быть больше, чем значение, которое было бы получено путем следования за начальным байтом байтов продолжения, которые все равны 65 (шестнадцатеричный 0x41), если это приведет к недопустимой слишком длинной форме.
Оранжевые ячейки с одной точкой - это байты продолжения. Шестнадцатеричное число, показанное после знака «+», является значением 5 добавляемых битов.
Красные ячейки указывают на начальные байты (для последовательности из такого количества байтов), которые никогда не могут появиться в правильно закодированном тексте UTF-EBCDIC, поскольку любое возможное продолжение приведет к недопустимой слишком длинной форме. Например, 0x76 отмечен красным, потому что даже 0x76 0x73 (который соответствует последовательности UTF-8-Mod 0xC2 0xBF) будет просто чрезмерно длинной кодировкой U + 005F (правильно закодирован как UTF-8-Mod 0x5F, UTF-EBCDIC 0x6D).
Oracle UTFE
Oracle UTFE это Unicode 3.0 UTF-8 База данных Oracle вариация, похожая на ЦЭСУ-8 вариант UTF-8, где дополнительные символы кодируются как два 4-байтовых символа, а не как один 4- или 5-байтовый символ. Он используется только на платформах EBCDIC.[1]
Преимущества:
- Только набор символов Unicode для EBCDIC.
- Длина типов SQL CHAR может быть указана в количестве символов.
- Двоичный порядок столбцов SQL CHAR такой же, как двоичный порядок столбцов SQL NCHAR, если данные состоят из тех же дополнительных символов. Следовательно, эти столбцы одинаково сортируют идентичные строки.[1]
Недостатки:
- Дополнительные символы занимают шесть байтов вместо четырех. Следовательно, необходимо преобразовать дополнительные символы.
- UTFE не является стандартной кодировкой Unicode. Клиенты, которым требуется кодировка UTF-8, должны преобразовывать данные при извлечении и хранении.[1]
Смотрите также
Рекомендации
- ^ а б c Бэрд, Кэти; Чиба, Дэн; Чу, Уинсон; Фан, Джессика; Хо, Клэр; Закон, Саймон; Ли, Джефф; Линсли, Питер; Мацуда, Кени; Осрофт, Тамзин; Такеда, Шиге; Танака, Линус; Тозава, Макото; Трюте, Барри; Цудзимото, Маюми; У, Инь; Яу, Майкл; Ю, Тим; Ван, Чао; Вонг, Саймон; Чжан, Вейран; Чжэн, Лэй; Чжу, Ян; Мур, Валари (2002) [1996]. «Приложение A: Данные локали». Руководство по поддержке глобализации баз данных Oracle9i (PDF) (Выпуск 2 (9.2) изд.). Корпорация Oracle. Оракул A96529-01. В архиве (PDF) из оригинала на 2017-02-14. Получено 2017-02-14.
внешняя ссылка
- ПРОТИВ. Умамахесваран, Технический отчет Unicode # 16: определение UTF-EBCDIC (2002-04-16)