Set di caratteri multibyte Lotus - Lotus Multi-Byte Character Set

Il Lotus Multi-Byte Character Set ( LMBCS ) è una codifica di caratteri multibyte proprietaria originariamente concepita nel 1988 presso Lotus Development Corporation con l'input di Bob Balaban e altri. Creato più o meno nello stesso periodo e affrontando alcuni degli stessi problemi, LMBCS potrebbe essere visto come sviluppo parallelo e possibile alternativa a Unicode . Per la massima compatibilità, i numeri successivi di LMBCS incorporano UTF-16 come sottoinsieme.

Commercialmente, LMBCS è stato introdotto per la prima volta come set di caratteri predefinito di Lotus 1-2-3 Release 3 per DOS nel marzo 1989 e Lotus 1-2-3 / G Release 1 per OS / 2 nel 1990, sostituendo il Lotus International Character a 8 bit Set (LICS) e ASCII utilizzati nelle versioni precedenti solo DOS di Lotus 1-2-3 e Symphony . LMBCS è utilizzato anche in IBM / Lotus SmartSuite , Notes e Domino , nonché in una serie di prodotti di terze parti.

LMBCS codifica i caratteri richiesti per le lingue utilizzando i caratteri latini , arabi , ebraici , greci e cirillici , i sistemi di scrittura thailandese , cinese , giapponese e coreano e simboli tecnici.

Codifiche

Tecnicamente, LMBCS è una codifica lead-byte in cui il punto di codice 00 hex così come i punti di codice da 20 hex (32) a 7F hex (127) sono identici ad ASCII (oltre che a LICS).

Codice punto 00 hex è sempre trattato come carattere NUL per garantire la massima compatibilità con le librerie di codice software esistenti che si occupano di stringhe null-terminate in molti linguaggi di programmazione come C . Questo vale anche per i codici UTF-16be, dove le parole in codice con la forma xx00 hex sono mappate a codici di uso privato con la forma F6xx hex durante la codifica per evitare l'uso di byte NUL e per i caratteri di controllo con escape, dove 20 hex viene aggiunto ai caratteri di controllo C0 (ma non C1) dopo il byte iniziale esadecimale 0F .

I punti di codice da 01 esadecimale a 1F esadecimale , che servono come codici di controllo in ASCII, vengono utilizzati come byte iniziali per cambiare la definizione dei punti di codice sopra 7F esadecimale tra diversi gruppi di codici (simili alle pagine di codice ) e allo stesso tempo determinare un singolo - o natura multibyte per il gruppo di codice corrispondente.

Ad esempio, il gruppo di codici 1 (con byte di gruppo 01 hex ) è quasi identico alla tabella codici SBCS 850 , mentre il gruppo di codici 16 (con byte di gruppo 10 hex ) è simile alla tabella codici MBCS giapponese 932 . I caratteri multibyte possono quindi occupare due o tre byte.

Nel canonico LMBCS , ogni carattere inizia con il suo byte di gruppo. Per ridurre la lunghezza, in ottimizzate o LMBCS compressi un gruppo di codice predefinito o codice di gruppo ottimizzazione possono essere definiti relative a ogni applicazione o base processo (idealmente scelti secondo la più alta probabilità di accadimento) e deve essere comunicato al codice interpretare in qualche modo (ad esempio specificando il nome "LMBCS- n " corrispondente ). In tal modo, il byte di gruppo può essere omesso per questi caratteri. Lotus 1-2-3 recupera il codice del gruppo di ottimizzazione dall'intestazione del file di origine corrispondente, mentre per Lotus Notes il codice del gruppo di ottimizzazione è fissato in modo da essere sempre 01 hex .

Predefinito Gruppo Byte Descrizione
N / A 00 esadecimale 1 NUL
LMBCS-1 01 esadecimale 2 Pagina codici 850 (DOS Latin-1)
LMBCS-2 02 hex 2 Code page 851 (DOS greco)
LMBCS-3 03 esadecimale 2 Pagina codici 1255 (Windows ebraico)
LMBCS-4 04 esadecimale 2 Pagina codici 1256 (Windows Arabic)
LMBCS-5 05 esadecimale 2 Pagina codici 1251 (Windows Cirillico)
LMBCS-6 06 hex 2 Pagina codici 852 (DOS Latin-2)
N / A 07 hex 1 BEL
LMBCS-8 08 hex 2 Tabella codici 1254 (Windows turco)
N / A 09 hex 1 TAB
N / A 0A esadecimale 1 LF
LMBCS-11 0B esadecimale 2 Pagina codici 874 (Thai)
(LMBCS-12) 0C esadecimale 2 Riservato
N / A 0D esadecimale 1 CR
(LMBCS-14) 0E esadecimale 2 Riservato
(LMBCS-15) 0F esadecimale 2 Codici di controllo C0 / C1 rimappati
LMBCS-16 10 hex 3 Tabella codici 932 / 943 (Giapponese / Shift-JIS)
LMBCS-17 11 hex 3 Tabella codici 949 / 1261 (coreano)
LMBCS-18 12 hex 3 Pagina codici 950 (cinese tradizionale / Taiwan / Big5 )
LMBCS-19 13 hex 3 Tabella codici 936 / 1386 (Cinese)
(LMBCS-20) 14 hex 3 UTF-16 ( Unicode )
N / A 15 hex 3 Riservato
N / A 16 hex 3 Riservato
N / A 17 hex 3 Riservato
N / A 18 hex 3 Riservato
N / A 19 hex 1 Gamma di sistemi Lotus 1-2-3
N / A 1A esadecimale 3 Riservato
N / A 1B esadecimale 3 Riservato
N / A 1C hex 3 Riservato
N / A 1D hex 3 Riservato
N / A 1E hex 3 Riservato
N / A 1F esadecimale 3 Riservato

Set di caratteri

Senza byte prefisso, i punti di codice da 32 (20 hex ) a 127 (7F hex ) vengono interpretati come segue (corrispondenti ai codici LMBCS da 32 a 127):

Codici a byte singolo ( ASCII / ISO-646-US )
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _UN _B _C _D _E _F
2_
32
SP
0020
!
0021
"
0022
#
0023
$
0024
%
0025
&
0026
'
0027
(
0028
)
0029
*
002A
+
002B
,
002C
-
002D
.
002E
/
002F
3_
48
0
0030
1
0031
2
0032
3
0033
4
0034
5
0035
6
0036
7
0037
8
0038
9
0039
:
003A
;
003B
<
003C
=
003D
>
003E
?
003F
4_
64
@
0040
A
0041
B
0042
C
0043
D
0044
E
0045
F
0046
G
0047
H
0048
Io
0049
J
004A
K
004B
L
004C
M
004D
N
004E
O
004F
5_
80
P
0050
Q
0051
R
0052
S
0053
T
0054
U
0055
V
0056
W
0057
X
0058
Y
0059
Z
005A
[
005B
\
005C
]
005D
^
005E
_
005F
6_
96
«
0060
a
0061
b
0062
c
0063
d
0064
e
0065
f
0066
g
0067
h
0068
io
0069
j
006A
k
006B
l
006C
m
006D
n
006E
o
006F
7_
112
p
0070
q
0071
r
0072
s
0073
t
0074
u
0075
v
0076
w
0077
x
0078
y
0079
z
007A
{
007B
|
007C
}
007D
~
007E
DEL /
007F / 2302

   Lettera    Numero    Punteggiatura    Simbolo    Altro    Non definito

Gruppo 1

I punti di codice del gruppo 1 LMBCS da 128 (80 hex ) a 255 (FF hex ) sono identici ai punti di codice corrispondenti nella tabella codici 850 (DOS Latin-1), mentre i punti di codice da 1 (01 hex ) a 127 (7F hex ) sono definiti secondo il seguente elenco di eccezioni (corrispondente ai codici LMBCS da 256 a 383):

LMBCS Gruppo 1, metà inferiore
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _UN _B _C _D _E _F
0_
0
NUL
0000

263A

263B

2665

2666

2663

2660

2022

25D8

25CB

25D9

2642

2640

266A

266B

263C
1_
16

25BA

25C4

2195

203C

00B6
§
00A7

25AC

21A8

2191

2193

2192

2190

221F

2194

25B2

25BC
2_
32
¨
00A8
~
007E
˚
02DA
^
005E
«
0060
´
00B4
"
201C
'
0027

2026
-
2013
-
2014
'
2018
'
2019

2039

203A
3_
48
¨
00A8
~
007E
˚
02DA
^
005E
«
0060
´
00B4

201E

201A
"
201D

2017
nbsp
00A0

FFFD
4_
64
Œ
0152
œ
0153
Ÿ
0178
˙
02D9
˚
02DA

255E

255F

258C

2590

25CA

2318

F8FF

F8FE
Ω
2126
5_
80

2568

2564

2565

2559

2558

2552

2553

256B

256A

2561

2562

2556

2555

255C

255B

2567
6_
96
ij
0133
IJ
0132

FB01

FB02
ʼn
0149
ŀ
0140
Ŀ
013F
¯
00AF
˘
02D8
˝
02DD
˛
02DB
02C7
~
007E
^
005E
7_
112

2020

2021
Ħ
0126
ħ
0127
Ŧ
0166
ŧ
0167

2122

2113
Ŋ
014A
ŋ
014B
ĸ
0138
Kr
 

2310

20A4

20A7

   Lettera    Numero    Punteggiatura    Simbolo    Altro    Non definito    Mappato a un carattere Unicode per uso privato

Gruppo 2

I punti di codice del gruppo 2 LMBCS da 128 (80 hex ) a 255 (FF hex ) sono identici ai punti di codice corrispondenti nella tabella codici 851 (DOS greco), mentre i punti di codice da 1 (01 hex ) a 127 (7F hex ) sono definiti secondo il seguente elenco di eccezioni:

LMBCS Gruppo 2, metà inferiore
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _UN _B _C _D _E _F
0_
0
NUL
0000
037A
0385
Ϊ
03AA
Ϋ
03AB
-
2015
0384
ʼ
02BC
ʽ
02BD

203E

F862

F863
1_
16

F864

F865

21D5

215E

215D

215C

215B

F867

21D1

21D3

21D2

21D0

F868

21D4

F869

F89F
2_
32

F89E

F89D

F89C

F89B

F89A

F899

F898

F897

F896

F895

F894

F893

F892

F891

F890

F88F
3_
48

F88E

F88D

F88C

F88B

F88A

F889

F888

F887

F886

F885

F884

F883

F882

F881

F880

F866
4_
64

2220

2207

F87F

F87E

F87D

F87C

F87B

F87A

F879

F878

F877

F876

F875

F874

F873

F872
5_
80

2202

2135

2111

211C

F871

F870

F86F

F86E

F86D

F86C

F86B

220B

2208

2209

2286

2287
6_
96

2297

2295

2713

22C0

2201

222B

2200

2203

F86A

2032

2033

221E

221D
φ
03C6

222A

2229
7_
112

2261

2245

2265

2264

2320

2321

2260

2248

2044

2219

2030

221A

207F

2205

2282

2283

   Lettera    Numero    Punteggiatura    Simbolo    Altro    Non definito    Mappato a un carattere Unicode per uso privato

Gruppo 6

I punti di codice del gruppo 6 LMBCS da 128 (80 hex ) a 255 (FF hex ) sono identici ai punti di codice corrispondenti nella tabella codici 852 (DOS Latin-2), mentre i punti di codice da 1 (01 hex ) a 127 (7F hex ) sono definiti secondo il seguente elenco di eccezioni:

LMBCS Gruppo 6, metà inferiore
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _UN _B _C _D _E _F
0_
0
NUL
0000
ā
0101
Ĉ
0108
ĉ
0109
Ċ
010A
ċ
010B
Ē
0112
ē
0113
Ė
0116
ė
0117
Ĝ
011C
ĝ
011D
Ġ
0120
ġ
0121
Ģ
0122
ģ
0123
1_
16
Ĥ
0124
ĥ
0125
Ĩ
0128
ĩ
0129
Ī
012A
ī
012B
Į
012E
į
012F
Ĵ
0134
ĵ
0135
Ķ
0136
ķ
0137
Ļ
013B
¸
013C
Ņ
0145
ņ
0146
2_
32
Ō
014C
ō
014D
Ŗ
0156
ŗ
0157
Ŝ
015C
ŝ
015D
Ũ
0168
ũ
0169
Ū
016A
ū
016B
Ŭ
016C
ŭ
016D
Ų
0172
ø
0173
Ā
0100
3_
48
4_
64
5_
80
6_
96
7_
112

   Lettera    Numero    Punteggiatura    Simbolo    Altro    Non definito

Guarda anche

Appunti

Riferimenti

Ulteriore lettura

link esterno