Wielobajtowy zestaw znaków Lotus

Lotus Multi-Byte Character Set ( LMBCS ) to zastrzeżone wielobajtowe kodowanie znaków, pierwotnie opracowane w 1988 roku w Lotus Development Corporation przy udziale Boba Balabana i innych. Stworzony mniej więcej w tym samym czasie i rozwiązujący niektóre z tych samych problemów, LMBCS można postrzegać jako równoległy rozwój i możliwą alternatywę dla Unicode . Aby zapewnić maksymalną kompatybilność, późniejsze wydania LMBCS zawierają UTF-16 jako podzbiór.

Komercyjnie LMBCS został po raz pierwszy wprowadzony jako domyślny zestaw znaków Lotus 1-2-3 Release 3 dla DOS w marcu 1989 r. I Lotus 1-2-3 / G Release 1 dla OS / 2 w 1990 r., Zastępując 8-bitowy międzynarodowy znak Lotus Set (LICS) i ASCII używane we wcześniejszych wersjach Lotus 1-2-3 i Symphony tylko dla DOS . LMBCS jest również używany w IBM / Lotus SmartSuite , Notes i Domino , a także w wielu produktach innych firm.

LMBCS koduje znaki wymagane dla języków używających alfabetu łacińskiego , arabskiego , hebrajskiego , greckiego i cyrylicy , tajskiego , chińskiego , japońskiego i koreańskiego systemu pisma oraz symboli technicznych.

kodowania

Technicznie rzecz biorąc, LMBCS to kodowanie typu lead-byte, w którym punkt kodowy 00 hex , jak również punkty kodowe 20 hex (32) do 7F hex (127) są identyczne z ASCII (jak również z LICS).

Punkt kodowy 00 hex jest zawsze traktowany jako znak NUL , aby zapewnić maksymalną kompatybilność kodu z istniejącymi bibliotekami oprogramowania obsługującymi łańcuchy zakończone znakiem NUL w wielu językach programowania, takich jak C . Dotyczy to nawet kodów UTF-16be, w których słowa kodowe w postaci xx00 hex są odwzorowywane na kody do użytku prywatnego w postaci F6xx hex podczas kodowania w celu uniknięcia użycia bajtów NUL oraz do znaków sterujących z ucieczką, gdzie 20 klątwa jest dodawany do znaków kontrolnych C0 (ale nie C1) po heksadecymalnym bajcie wiodącym 0F.

Punkty kodowe od 01 hex do 1F hex , które służą jako kody kontrolne w ASCII, są używane jako bajty wiodące do przełączania definicji punktów kodowych powyżej 7F hex między kilkoma grupami kodowymi (podobnie jak strony kodowe ) i jednocześnie określają jedną - lub charakter wielobajtowy dla odpowiedniej grupy kodu.

Na przykład grupa kodowa 1 (z bajtem grupowym 01 hex ) jest prawie identyczna ze stroną kodową SBCS 850 , podczas gdy grupa kodowa 16 (z bajtem grupowym 10 hex ) jest podobna do japońskiej strony kodowej MBCS 932 . Znaki wielobajtowe mogą zatem zajmować dwa lub trzy bajty.

W kanonicznym LMBCS każdy znak zaczyna się od bajtu grupy. Aby skrócić długość, w zoptymalizowanym lub skompresowanym LMBCS domyślną grupę kodu lub kod grupy optymalizacji można zdefiniować na podstawie aplikacji lub procesu (najlepiej wybrać zgodnie z najwyższym prawdopodobieństwem wystąpienia) i należy go w jakiś sposób przekazać kodowi interpretującemu (np. przez określenie odpowiedniego „LMBCS- n " nazwa). W ten sposób bajt grupy można pominąć dla tych znaków. Lotus 1-2-3 pobiera kod grupy optymalizacji z nagłówka odpowiedniego pliku źródłowego, podczas gdy w Lotus Notes kod grupy optymalizacji jest zawsze 01 szesnastkowy .

Domyślny Grupa Bajty Opis
Nie dotyczy 00 szesnastkowy 1 NUL
LMBCS-1 01 szesnastkowy 2 Strona kodowa 850 (DOS Latin-1)
LMBCS-2 02 szesnastkowy 2 Strona kodowa 851 (grecki DOS)
LMBCS-3 03 szesnastkowy 2 Strona kodowa 1255 (Windows hebrajski)
LMBCS-4 04 szesnastkowy 2 Strona kodowa 1256 (Windows arabski)
LMBCS-5 05 szesnastkowy 2 Strona kodowa 1251 (cyrylica Windows)
LMBCS-6 06 szesnastkowy 2 Strona kodowa 852 (DOS Latin-2)
Nie dotyczy 07 szesnastkowy 1 BEL
LMBCS-8 08 szesnastkowy 2 Strona kodowa 1254 (Windows turecki)
Nie dotyczy 09 szesnastkowy 1 PATKA
Nie dotyczy 0A szesnastkowy 1 LF
LMBCS-11 0B heks 2 Strona kodowa 874 (tajski)
(LMBCS-12) 0C szesnastkowy 2 Skryty
Nie dotyczy 0D szesnastkowy 1 CR
(LMBCS-14) 0E heks 2 Skryty
(LMBCS-15) 0F szesnastkowy 2 Przemapowano kody kontrolne C0/C1
LMBCS-16 10 szesnastkowy 3 Strona kodowa 932/943 ( japoński / Shift-JIS )
LMBCS-17 11 heks 3 Strona kodowa 949/1261 ( koreański )
LMBCS-18 12 szesnastkowy 3 Strona kodowa 950 (chiński tradycyjny / Tajwan / Big5 )
LMBCS-19 13 szesnastkowy 3 Strona kodowa 936/1386 ( chiński uproszczony )
(LMBCS-20) 14 szesnastkowy 3 UTF-16 ( Unicode )
Nie dotyczy 15 szesnastkowy 3 Skryty
Nie dotyczy 16 szesnastkowy 3 Skryty
Nie dotyczy 17 szesnastkowy 3 Skryty
Nie dotyczy 18 szesnastkowy 3 Skryty
Nie dotyczy 19 szesnastkowy 1 Gama systemów Lotus 1-2-3
Nie dotyczy 1A szesnastkowy 3 Skryty
Nie dotyczy 1B heks 3 Skryty
Nie dotyczy 1C szesnastkowy 3 Skryty
Nie dotyczy 1D szesnastkowy 3 Skryty
Nie dotyczy 1E heks 3 Skryty
Nie dotyczy 1F szesnastkowy 3 Skryty

Zestaw znaków

Bez bajtu prefiksu punkty kodowe od 32 (20 hex ) do 127 (7F hex ) są interpretowane w następujący sposób (odpowiadające kodom LMBCS od 32 do 127):

Kody jednobajtowe ( ASCII / ISO-646-US )
0 1 2 3 4 5 6 7 8 9 A B C D mi F
2x  Sp  ! " # $ % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4x @ A B C D mi F G H I J k Ł M N O
5x P Q R S T u V W X Y Z [ \ ] ^ _
6x ` A B C D mi F G H I J k l M N o
7x P Q R S T u w w X y z { | } ~ DEL /

Grupa 1

Punkty kodowe grupy 1 LMBCS od 128 (80 hex ) do 255 (FF hex ) są identyczne z odpowiednimi punktami kodowymi na stronie kodowej 850 (DOS Latin-1), podczas gdy punkty kodowe od 1 (01 hex ) do 127 (7F hex ) są zdefiniowane zgodnie z następującą listą wyjątków (odpowiadającą kodom LMBCS od 256 do 383):

LMBCS Grupa 1, dolna połowa
0 1 2 3 4 5 6 7 8 9 A B C D mi F
0x NUL
1x §
2x ¨ ~ ˚ ^ ` ´ ' - ' '
3x ¨ ~ ˚ ^ ` ´ nbsp
4x Œ œ ź ˙ ˚ Ω
5x
6x ij ja ʼn ŀ Ŀ ¯ ˘ ˝ ˛ ˇ ~ ^
7x H H T T N N ĸ Kr
  U + odwzorowane na znak użytku prywatnego Unicode

Grupa 2

Punkty kodowe grupy 2 LMBCS od 128 (80 hex ) do 255 (FF hex ) są identyczne z odpowiednimi punktami kodowymi na stronie kodowej 851 (grecki DOS), podczas gdy punkty kodowe od 1 (01 hex ) do 127 (7F hex ) są zdefiniowane zgodnie z następująca lista wyjątków:

LMBCS Grupa 2, dolna połowa
0 1 2 3 4 5 6 7 8 9 A B C D mi F
0x NUL ͺ ΅ Ϊ Ϋ - ΄ ʼ ʽ
1x
2x
3x
4x
5x
6x φ
7x

Grupa 6

Punkty kodowe grupy 6 LMBCS od 128 (80 hex ) do 255 (FF hex ) są identyczne z odpowiednimi punktami kodowymi na stronie kodowej 852 (DOS Latin-2), podczas gdy punkty kodowe od 1 (01 hex ) do 127 (7F hex ) są zdefiniowane zgodnie z następującą listą wyjątków:

LMBCS Grupa 6, dolna połowa
0 1 2 3 4 5 6 7 8 9 A B C D mi F
0x NUL A C C C C MI mi MI mi G G G G G G
1x H H I I I I I I J J Ķ ķ Ļ ļ N N
2x O ō R R S S Ũ u Ū u Ŭ ŭ Ų ų A
3x
4x
5x
6x
7x

Zobacz też

Notatki

Dalsza lektura

Linki zewnętrzne