Jump to content

Lotus Multi-Byte Character Set

From Alfawiki
Lotus Development Corporation
Company typeSubsidiary (at time of LMBCS development)
IndustrySoftware
Founded1982; 44 years ago (1982)
FounderMitch Kapor
Key people
Bob Balaban (key contributor to LMBCS)
ProductsLotus 1-2-3, Lotus Notes, Domino, IBM/Lotus SmartSuite
ParentIBM (after acquisition)

The Lotus Multi-Byte Character Set (LMBCS) is a proprietary multi-byte encoding system developed in 1988 by Lotus Development Corporation, with key input from Bob Balaban and others. Conceived as an alternative to Unicode to tackle similar encoding challenges, LMBCS eventually integrated UTF-16 as a subset to improve interoperability.

LMBCS was first deployed commercially as the standard character encoding in Lotus 1-2-3 Release 3 for DOS (1989) and Lotus 1-2-3/G Release 1 for OS/2 (1990), succeeding the earlier 8-bit Lotus International Character Set (LICS) and ASCII. It remains in use within IBM/Lotus SmartSuite, Lotus Notes, Domino, and several third-party software products.

This encoding accommodates characters from Latin, Arabic, Hebrew, Greek, and Cyrillic alphabets, alongside Thai, Chinese, Japanese, Korean scripts, as well as various technical symbols.

Encoding Variants

LMBCS functions as a lead-byte encoding where code points 00hex and the range 20hex through 7Fhex map directly to ASCII (and LICS). The code point 00hex consistently represents NUL to ensure compatibility with null-terminated strings common in programming languages such as C. UTF-16 big-endian codes ending with xx00hex are translated into private-use code points to prevent embedded NUL bytes. Control characters are encoded by prefixing the 0Fhex lead byte followed by 20hex.

Code points from 01hex to 1Fhex, which usually correspond to ASCII control characters, act as lead bytes that select different code groups—akin to code pages—defining either single-byte or multi-byte character sequences. For instance, group 1 (01hex) is closely aligned with code page 850 (DOS Latin-1), whereas group 16 (10hex) corresponds to Japanese code page 932. Multi-byte characters may consist of two or three bytes.

In the canonical LMBCS format, every character starts with its group byte. To reduce data size, compressed LMBCS assigns a default or optimization group per application or process—based on anticipated character usage—allowing omission of the group byte for those characters. Lotus 1-2-3 reads this setting from file headers; Lotus Notes uses a fixed default of 01hex.

Default Group Bytes Description
N/A 00hex 1 NUL character
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 control character
LMBCS-8 08hex 2 Code page 1254 (Windows Turkish)
N/A 09hex 1 TAB control character
N/A 0Ahex 1 LF control character
LMBCS-11 0Bhex 2 Code page 874 (Thai)
(LMBCS-12) 0Chex 2 Reserved for future use
N/A 0Dhex 1 CR control character
(LMBCS-14) 0Ehex 2 Reserved for future use
(LMBCS-15) 0Fhex 2 Remapped C0/C1 control codes

LMBCS-16

10hex 3 Code pages 932/943 (Japanese / Shift-JIS)

LMBCS-17

11hex 3 Code page 949 / Unified Hangul Code (Korean)

LMBCS-18

12hex 3 Code page 950 (Traditional Chinese / Big5)

LMBCS-19

13hex 3 Code pages 936/1386 (Simplified Chinese)
(LMBCS-20) 14hex 3 UTF-16 (Unicode subset)
15–1Ehex Reserved for future assignment
19a

N/A

19a

1

Lotus 1‑2‑3 system-specific range


Character set

In the absence of a prefix byte, code points ranging from 32 (20hex) to 127 (7Fhex) directly correspond to LMBCS codes 32 through 127 and are interpreted as follows:

... [table continues similarly through code points 64 to 127] ...
Template:Chset-left1 Template:Chset-ctrl1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1
Template:Chset-left1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1

Group 1

Within LMBCS group 1, code points from 128 (80hex) to 255 (FFhex) align with those found in code page 850 (DOS Latin-1). The range from 1 (01hex) to 127 (7Fhex) follows a specified exception list, representing LMBCS codes between 256 and 383:

Template:Chset - left 1Template:Chset - cell 1 ... ... [table continues with similar structure, omitted for brevity] ...
Template:Chset - left 1 Template:Chset - ctrl 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1 Template:Chset - cell 1


Group 2

Within LMBCS group 2, the code points ranging from 128 (80hex) to 255 (FFhex) correspond directly to code page 851, which is the DOS Greek character set. Conversely, code points from 1 (01hex) up to 127 (7Fhex) adhere to a distinct exception list:

Template:Chset-left1 Template:Chset-ctrl1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1
Template:Chset-left1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1 Template:Chset-cell1

... [remaining entries continue similarly] ...

Group 6

In LMBCS group 6, the range of code points from 128 (80hex) through 255 (FFhex) aligns with code page 852, also known as DOS Latin-2. Meanwhile, code points between 1 (01hex) and 127 (7Fhex) follow a defined exception list unique to this group:

See also

Further reading

  • (Contains information on LMBCS and Lotus system character ranges.)
  • Character Translation Files (.CTF) utilized by Notes version 2.x and Country Language Service (.CLS) files from Notes 3.0 onward incorporate LMBCS mappings into various codepages [1] [2]

External links