UTF-EBCDIC - это кодировка символов , используемая для представления Unicode символов. Он предназначен для поддержки EBCDIC, так что устаревшие приложения EBCDIC на мэйнфреймах могут обрабатывать символы без особого труда. Его преимущества для существующих систем на основе EBCDIC аналогичны преимуществам UTF-8 для существующих систем на основе ASCII. Подробная информация о UTF-EBCDIC описана в техническом отчете Unicode №16.
Для создания версии в кодировке UTF-EBCDIC серии кодовых точек Unicode сначала применяется кодировка на основе 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, COBOL, PL / I, Java и IBM XML. набор инструментов поддерживает UTF-16 на мэйнфреймах IBM.
Есть 160 символов с одним -байтные кодировки в UTF-EBCDIC (по сравнению со 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 | . 008E | VT. 000B | FF. 000C | CR. 000D | SO. 000E | SI. 000F |
1_ | DLE. 0010 | DC1. 0011 | DC2. 0012 | DC3. 0013 | OSC. 009D | LF. 000A | BS. 0008 | ESA. 0087 | CAN. 0018 | EM. 0019 | PU2. 0092 | . 008F | FS. 001C | GS. 001D | RS. 001E | US. 001F |
2_ | . 0080 | . 0081 | . 0082 | . 0083 | IND. 0084 | NEL. 0085 | ETB. 0017 | ESC. 001B | . 0088 | . 0089 | . 008A | PLD. 008B | PLU. 008C | ENQ. 0005 | ACK. 0006 | BEL. 0007 |
3_ | DCS. 0090 | PU1. 0091 | SYN. 0016 | STS. 0093 | CCH. 0094 | MW. 0095 | SPA. 0096 | EOT. 0004 | SOS. 0098 | . 0099 | . 009A | CSI. 009B | DC4. 0014 | NAK. 0015 | . 009E | . 001A |
4_ | SP. 0020 | •. +00 | •. +01 | •. +02 | •. +03 | •. +04 | •. +05 | •. +06 | •. +07 | •. +08 | •. +09 | .. 002E | <. 003C | (. 0028 | +. 002B | |. 007C |
5_ | . 0026 | •. + 0A | •. + 0B | •. + 0C | •. + 0D | •. + 0E | •. + 0F | •. +10 | •. +11 | •. +12 | !. 0021 | $. 0024 | *. 002A | ). 0029 | ;. 003B | ^. 005E |
6_ | -. 002D | /. 002F | •. +13 | •. +14 | •. +15 | •. +16 | •. +17 | •. +18 | •. +19 | •. + 1A | •. + 1B | ,. 002C | %. 0025 | _. 005F | >. 003E | ?. 003F |
7_ | •. + 1C | •. + 1D | •. + 1E | •. + 1F | 2. 0000 | 2. 0020 | 2. 0040 | 2. 0060 | 2. 0080 | `. 0060 | :. 003A | #. 0023 | @. 0040 | '. 0027 | =. 003D | ". 0022 |
8_ | 2. 00A0 | a. 0061 | b. 0062 | c. 0063 | d. 0064 | e. 0065 | f. 0066 | g. 0067 | h. 0068 | i. 0069 | 2. 00C0 | 2. 00E0 | 2. 0100 | 2. 0120 | 2. 0140 | 2. 0160 |
9_ | 2. 0180 | j. 006A | k. 006B | l. 006C | m. 006D | n. 006E | o. 006F | p. 0070 | q. 0071 | r. 0072 | 2. 01A0 | 2. 01C0 | 2. 01E0 | 2. 0200 | 2. 0220 | 2. 0240 |
A_ | 2. 0260 | ~. 007E | s. 0073 | t. 0074 | u. 0075 | v. 0076 | w. 0077 | x. 0078 | y. 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 | A. 0041 | B. 0042 | C. 0043 | D. 0044 | E. 0045 | F. 0046 | G. 0047 | H. 0048 | I. 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 | O. 004F | P. 0050 | Q. 0051 | R. 0052 | 3. 3800 | 3. 3C00 | 4. 4000 | 4. 8000 | 4. 10000 | 4. 18000 |
E_ | \. 005C | 4. 20000 | S. 0053 | T. 0054 | U. 0055 | V. 0056 | W. 0057 | X. 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 |
Буква Число Знаки препинания Символ Другое Не определено
Синие ячейки, содержащие большое однозначное число, обозначают статус rt байтов для последовательности из такого количества байтов. Номер точки шестнадцатеричного кода без жирного шрифта, показанный в ячейке, является наименьшим значением символа, закодированным с использованием этого начального байта. Это значение может быть больше, чем значение, которое было бы получено путем следования за начальным байтом байтов продолжения, которые все равны 65 (шестнадцатеричный 0x41), если это приведет к недопустимой слишком длинной форме.
Оранжевые ячейки с одной точкой - это байты продолжения. Шестнадцатеричное число, показанное после знака «+», является значением 5 добавляемых битов.
Красные ячейки указывают начальные байты (для последовательности из такого количества байтов), которые никогда не могут появиться в правильно закодированном тексте UTF-EBCDIC, поскольку любое возможное продолжение приведет к недопустимой слишком длинной форме. Например, 0x76 отмечен красным, потому что даже 0x76 0x73 (который соответствует последовательности UTF-8-Mod 0xC2 0xBF) будет просто чрезмерно длинной кодировкой U + 005F (правильно закодирован как UTF-8-Mod 0x5F, UTF-EBCDIC 0x6D).
Oracle UTFE - это вариант Unicode 3.0 UTF-8 Oracle database, аналогичный CESU-8 вариант UTF-8, где дополнительные символы кодируются как два 4-байтовых символа, а не как один 4- или 5-байтовый символ. Он используется только на платформах EBCDIC.
Преимущества:
Недостатки: