Lotus Multi-Byte Character Set

The Lotus Multi-Byte Character Set (LMBCS) is a proprietary multi-byte character encoding originally conceived in 1988 at Lotus Development Corporation with input from Bob Balaban and others.

Created around the same time and addressing some of the same problems, LMBCS could be viewed as parallel development and possible alternative to Unicode. For maximum compatibility, later issues of LMBCS incorporate UTF-16 as a subset.

Commercially, LMBCS was first introduced as the default character set of Lotus 1-2-3 Release 3 for DOS in March 1989 and Lotus 1-2-3/G Release 1 for OS/2 in 1990 replacing the 8-bit Lotus International Character Set (LICS) and ASCII used in earlier DOS-only versions of Lotus 1-2-3 and Symphony. LMBCS is also used in IBM/Lotus SmartSuite, Notes and Domino, as well as in a number of third-party products.

LMBCS encodes the characters required for languages using the Latin, Arabic, Hebrew, Greek and Cyrillic scripts, the Thai, Chinese, Japanese and Korean writing systems, and technical symbols.

Encodings

Technically, LMBCS is a lead-byte encoding where code point 00hex as well as code points 20hex (32) to 7Fhex (127) are identical to ASCII (as well as to LICS).

Code point 00hex is always treated as NUL character to ensure maximum code compatibility with existing software libraries dealing with null-terminated strings in many programming languages such as C. This applies even to the UTF-16be codes, where code words with the form xx00hex are mapped to private-use codes with the form F6xxhex during encoding in order to avoid the use of NUL bytes, and to escaped control characters, where 20hex is added to the C0 (but not C1) control characters following the 0Fhex lead byte.

Code points 01hex to 1Fhex, which serve as control codes in ASCII, are used as lead bytes to switch the definition of code points above 7Fhex between several code groups (similar to code pages) and at the same time determine either a single- or multi-byte nature for the corresponding code group.

For example, code group 1 (with group byte 01hex) is almost identical to the SBCS code page 850, whereas code group 16 (with group byte 10hex) is similar to the Japanese MBCS code page 932. Multi-byte characters can thus occupy two or three bytes.

In canonical LMBCS, each character starts with its group byte. To reduce the length, in optimized or compressed LMBCS a default code group or optimization group code can be defined on a per application or process basis (ideally chosen according to the highest likelihood of occurrence) and must be communicated to the interpreting code in some way (f.e. by specifying the corresponding "LMBCS-n" name). Thereby, the group byte can be omitted for these characters. Lotus 1-2-3 retrieves the optimization group code from the file header of the corresponding source file, whereas for Lotus Notes the optimization group code is fixed to be always 01hex.

Default Group Bytes Description
N/A 00hex 1 NUL
LMBCS-1 01hex 2 Code page 850 (DOS Latin-1)
LMBCS-2 02hex 2 Code page 851 (DOS Greek)
LMBCS-3 03hex 2 Code page 1255 (Windows Hebrew)
LMBCS-4 04hex 2 Code page 1256 (Windows Arabic)
LMBCS-5 05hex 2 Code page 1251 (Windows Cyrillic)
LMBCS-6 06hex 2 Code page 852 (DOS Latin-2)
N/A 07hex 1 BEL
LMBCS-8 08hex 2 Code page 1254 (Windows Turkish)
N/A 09hex 1 TAB
N/A 0Ahex 1 LF
LMBCS-11 0Bhex 2 Code page 874 (Thai)
(LMBCS-12) 0Chex 2 Reserved
N/A 0Dhex 1 CR
(LMBCS-14) 0Ehex 2 Reserved
(LMBCS-15) 0Fhex 2 Remapped C0/C1 control codes
LMBCS-16 10hex 3 Code page 932/943 (Japanese / Shift-JIS)
LMBCS-17 11hex 3 Code page 949/1261 (Korean)
LMBCS-18 12hex 3 Code page 950 (Traditional Chinese / Taiwan / Big5)
LMBCS-19 13hex 3 Code page 936/1386 (Simplified Chinese)
(LMBCS-20) 14hex 3 UTF-16 (Unicode)
N/A 15hex 3 Reserved
N/A 16hex 3 Reserved
N/A 17hex 3 Reserved
N/A 18hex 3 Reserved
N/A 19hex 1 Lotus 1-2-3 system range
N/A 1Ahex 3 Reserved
N/A 1Bhex 3 Reserved
N/A 1Chex 3 Reserved
N/A 1Dhex 3 Reserved
N/A 1Ehex 3 Reserved
N/A 1Fhex 3 Reserved

Character set

Without prefix byte the code points 32 (20hex) to 127 (7Fhex) are interpreted as follows (corresponding to LMBCS codes 32 to 127):

Single byte codes (ASCII/ISO-646-US)
0 1 2 3 4 5 6 7 8 9 A B C D E F
2x  SP  ! " # $ % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4x @ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z [ \ ] ^ _
6x ` a b c d e f g h i j k l m n o
7x p q r s t u v w x y z { | } ~ DEL/

Group 1

LMBCS group 1 code points 128 (80hex) to 255 (FFhex) are identical to the corresponding code points in code page 850 (DOS Latin-1), whereas code points 1 (01hex) to 127 (7Fhex) are defined according to the following exception list (corresponding to LMBCS codes 256 to 383):

LMBCS Group 1, lower half
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x NUL
1x §
2x ¨ ~ ˚ ^ ` ´ ' -
3x ¨ ~ ˚ ^ ` ´ nbsp
4x Œ œ Ÿ ˙ ˚
5x
6x ij IJ ʼn ŀ Ŀ ¯ ˘ ˝ ˛ ˇ ~ ^
7x Ħ ħ Ŧ ŧ Ŋ ŋ ĸ Kr
  U+Mapped to a Unicode private use character

Group 2

LMBCS group 2 code points 128 (80hex) to 255 (FFhex) are identical to the corresponding code points in code page 851 (DOS Greek), whereas code points 1 (01hex) to 127 (7Fhex) are defined according to the following exception list:

LMBCS Group 2, lower half
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x NUL ͺ ΅ Ϊ Ϋ ΄ ʼ ʽ
1x
2x
3x
4x
5x
6x φ
7x
  Mapped to a Unicode private use character

Group 6

LMBCS group 6 code points 128 (80hex) to 255 (FFhex) are identical to the corresponding code points in code page 852 (DOS Latin-2), whereas code points 1 (01hex) to 127 (7Fhex) are defined according to the following exception list:

LMBCS Group 6, lower half
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x NUL ā Ĉ ĉ Ċ ċ Ē ē Ė ė Ĝ ĝ Ġ ġ Ģ ģ
1x Ĥ ĥ Ĩ ĩ Ī ī Į į Ĵ ĵ Ķ ķ Ļ ļ Ņ ņ
2x Ō ō Ŗ ŗ Ŝ ŝ Ũ ũ Ū ū Ŭ ŭ Ų ų Ā
3x
4x
5x
6x
7x

See also

Notes

References

Further reading

This article uses material from the Wikipedia English article Lotus Multi-Byte Character Set, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). Content is available under CC BY-SA 4.0 unless otherwise noted. Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki English (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.

Tags:

Lotus Multi-Byte Character Set EncodingsLotus Multi-Byte Character Set Character setLotus Multi-Byte Character Set Further readingLotus Multi-Byte Character SetCharacter encodingLotus Development CorporationMulti Byte Character SetUTF-16Unicode

🔥 Trending searches on Wiki English:

Dassault Mirage IIILa LigaWilliam ShakespeareHenry VIIIPeriodic tableAnunnakiEverton F.C.YouTube KidsAshlyn HarrisRiley KeoughMike FaistLorna SlaterGeneration Z2018 NFL draftMiriam RiveraSelena GomezSplit (2016 American film)Jake GyllenhaalTitanicDeadpool & WolverineMonkey Man (film)Greenland sharkList of James Bond filmsShogunKilling EveHouse of the DragonMichael JacksonOttoman EmpireCharlie HurleySean Foley (director)IchthyotitanGoogle TranslateSexKendrick LamarWinston ChurchillVicky LópezMoulin RougePakistan national cricket teamHenry CavillJalen WilliamsNicole KidmanStewart ButterfieldManjummel BoysEuphoria (American TV series)Laurence FoxAustin MurphyBarbie (film)Kurt RussellBhimaaWhatsAppRaven-SymonéOperation SandblastBradley CooperSiren (2024 film)Iona AllenJustin BieberGigi HadidCarnation RevolutionBiggest ball of twineHeart (band)MillennialsRyan GoslingRoad House (2024 film)Lionel MessiOnce Upon a Time in HollywoodMichael AvenattiList of Marvel Cinematic Universe filmsGeorge W. BushThe Watchers (film)JesusSunny LeoneJoaquin PhoenixSaudi ArabiaCaleb WilliamsDan Schneider🡆 More