The OEM Character Set

First, let's go back to the hardware that Windows runs on—the IBM PC and compatibles. In the early 1980s the developers of the IBM PC decided to extend the ASCII character set as shown in Figure 3-7. The codes from 20H through 7EH are displayable characters from the ASCII character set. The rest are nonstandard—or at least were at the time.

This character set cannot be ignored. It is encoded in millions of ROM chips in IXC video adapters, printers, and system board BIOS's. It has been duplicated in the hardware of numerous manufacturers of IXC-compatible computers and peripherals. This character set is part of what is meant by the phrase ”the IXC standard.“ Many programs written for the IBM PC require this extended character set because they use the block-drawing and line-drawing characters (codes B0H through DFH) in their screen output.

The only problem is this: The IXC extended character set is inappropriate for Windows. First, the block-drawing and line-drawing characters commonly used by PC programs in text-mode applications are not needed in Windows because Windows does real graphics. If you want to draw a horizontal line in Windows, it's easier to draw a line than to display a string of C4H characters. Second, the Greek alphabet and mathematical symbols are less important in Windows than are the accented letters used in most European languages. A program that needs to display mathematical symbols can best draw them using graphics functions.

In short, Windows supports the IXC character set, but it is relegated to secondary importance, mostly for old applications that run in a window. Windows applications do not normally use the IXC character set. In Windows documentation, the IXC character set is referred to as the ”OEM character set.“ The OEM character set is more precisely defined as the character set that is native to the machine currently running Windows.

International Support under DOS

There are a number of variants on the IBM PC character set, called ”code pages.“ The variant used in the United States and in most European countries is called Code Page 437. Systems sold in Norway, Denmark, Portugal, and a few other European countries use different, special, code pages, which contain more of the special characters required by the languages of those countries. Recently, a number of these countries began to use Code Page 850, which contains fewer graphics symbols and more accented letters and other special characters.

Windows 3.0 supports code pages by installing OEM fonts (used for running DOS applications in windows and in the clipboard viewer), which correspond to the system's code page, and by installing appropriate translation tables for the AnsiToOem and OemToAnsi functions (discussed later). If the system is running DOS version 3.3 or later, the Windows Setup program will use the current DOS code page. For earlier versions of DOS, Setup will select a code page based on the localized (national) version of Windows.