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 соответственно.

UTF-EBCDIC
_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]

Смотрите также

Рекомендации

  1. ^ а б c Бэрд, Кэти; Чиба, Дэн; Чу, Уинсон; Фан, Джессика; Хо, Клэр; Закон, Саймон; Ли, Джефф; Линсли, Питер; Мацуда, Кени; Осрофт, Тамзин; Такеда, Шиге; Танака, Линус; Тозава, Макото; Трюте, Барри; Цудзимото, Маюми; У, Инь; Яу, Майкл; Ю, Тим; Ван, Чао; Вонг, Саймон; Чжан, Вейран; Чжэн, Лэй; Чжу, Ян; Мур, Валари (2002) [1996]. «Приложение A: Данные локали». Руководство по поддержке глобализации баз данных Oracle9i (PDF) (Выпуск 2 (9.2) изд.). Корпорация Oracle. Оракул A96529-01. В архиве (PDF) из оригинала на 2017-02-14. Получено 2017-02-14.

внешняя ссылка