Code page 1004
| Company type | Public |
|---|---|
| Industry | Software, Technology |
| Founded | April 4, 1975 in Albuquerque, New Mexico, U.S. |
| Founder | Bill Gates, Paul Allen |
| Headquarters | Redmond, Washington , United States |
| Products | Windows-1252 character encoding, Microsoft Windows, Microsoft Office, and other software products |
| Website | microsoft |
Windows-1252, also known as CP-1252 (Windows code page 1252), is a legacy single-byte character encoding created by Microsoft. It serves as the default "ANSI code page" within Microsoft Windows systems across regions including the Americas, Western Europe, Oceania, and large parts of Africa.
Initially, Windows-1252 was identical to ISO 8859-1. However, starting with Windows 2.0, it introduced additional characters in the hexadecimal range 0x80 to 0x9F—an area reserved for control characters in ISO standards. These extra symbols comprise typographic quotation marks and all printable characters found in ISO 8859-15.
Despite the widespread adoption of multi-byte encodings like UTF-8 on the web, Windows-1252 remains the most prevalent single-byte character set worldwide. As of mid-2025, approximately 1.0% of websites specify ISO 8859-1—which modern browsers interpret as Windows-1252 according to the HTML5 standard—while about 0.3% explicitly declare Windows-1252, summing to roughly 1.3% usage overall. This figure is notably higher in certain markets; for instance, Brazil and Germany each exhibit combined Windows-1252 and ISO 8859-1 usage near 2.3%, indicating its ongoing significance in these locales.
Name
Within Windows environments, this encoding is identified by code page number 1252 and carries the IANA-designated name "windows-1252." Microsoft commonly labels it as an "ANSI Code Page," though it has never been formally ratified by ANSI. Microsoft acknowledges that the term "ANSI" is a historical misnomer that persists informally among Windows users.
IBM catalogs this encoding as code page 1252, with CCSID identifiers 1252 and extended CCSID 5348. In Oracle Database contexts, it is referred to as "WE8MSWIN1252."
History
Windows-1252 was introduced alongside Microsoft Windows 1.0, initially mirroring ISO-8859-1 but leaving certain code points undefined. Subsequent updates in Windows versions 2.0 and 3.1 progressively assigned values to these positions, culminating with the final iteration released in Windows 98.
During the 1990s, numerous Microsoft applications generating HTML content employed Windows-1252-specific characters while labeling documents as ISO-8859-1 or ASCII. This discrepancy caused rendering problems on non-Windows platforms; for example, smart quotes from Microsoft Word often appeared incorrectly outside Windows environments. By around the year 2000, most web browsers and email clients began interpreting ISO-8859-1 and US-ASCII content as Windows-1252 to resolve these compatibility issues—a practice now mandated by the HTML5 specification.
Although Unicode support via UCS-2/UTF-16 was available in Windows NT, many programs favored using single-byte encodings such as Windows-1252 to maintain compatibility. Since the release of Windows 10, support for UTF-8 has expanded steadily, gradually shifting away from reliance on legacy encodings.
Codepage layout
The following table illustrates the Windows-1252 character set. Variations from ISO-8859-1 are indicated by Unicode code points displayed beneath each character, based on Unicode.org’s recommended "best fit" mappings for Windows-1252. Hovering over characters reveals tooltips with their Unicode names and decimal Alt code values.
| Codepoint | Character | Unicode | Description |
|---|---|---|---|
| | U+0020 | Space | |||
| ! | U+0021 | Exclamation mark | |||
| " | U+0022 | Quotation mark | |||
| # | U+0023 | Number sign | |||
| $ | U+0024 | Dollar sign | |||
| % | U+0025 | Percent sign | |||
| & | U+0026 | Ampersand | |||
| ' | U+0027 | Apostrophe | |||
| ( | U+0028 | Left parenthesis | |||
| ) | U+0029 | Right parenthesis | |||
| * | U+002A | Asterisk | |||
| + | U+002B | Plus sign | |||
| , | U+002C | Comma | |||
| - | U+002D | Hyphen-minus | |||
| . | U+002E | Full stop | |||
| / | U+002F | Solidus |
| Codepoint | Character | Unicode | Description |
|---|---|---|---|
| € | U+20AC | Euro sign | |||
| ‚ | U+201A | Single low-9 quotation mark | |||
| ƒ | U+0192 | Latin small letter f with hook (Florin) | |||
| „ | U+201E | Double low-9 quotation mark | |||
| … | U+2026 | Horizontal ellipsis | |||
| † | U+2020 | Dagger | |||
| ‡ | U+2021 | Double dagger | |||
| ˆ | U+02C6 | Modifier letter circumflex accent | |||
| ‰ | U+2030 | Per mille sign | |||
| Š | U+0160 | Latin capital letter S with caron |
Microsoft and the Unicode Consortium note that code points at positions 81, 8D, 8F, 90, and 9D remain unassigned. Nevertheless, the Windows API function MultiByteToWideChar maps these slots to corresponding C0 and C1 control codes. This mapping behavior is documented within the "best fit" character mapping guidelines.
OS/2 extensions (Code page 1004)
The Code page 1004 (CCSID 1004), also known as "Windows Extended," is supported by the OS/2 operating system. This character set is largely similar to code page 1252, with the exception that certain C0 control characters are substituted by diacritic marks.
MS-DOS extensions (rare)
A seldom-used variation of code page 1252 features graphical characters in the 0x00 to 0x1f range, intended for box drawing purposes. This variant was employed by software such as MSDOS Edit and Codeview. Intel Corporation utilized this specific code page during the mid-1990s for an Install/Recovery disk image tool associated with its P6 User Test Program hardware, primarily distributed within the EMEA (Europe, Middle East, and Africa) territories. Subsequently, these utilities adopted code page 850 instead.
See also
- Latin script in Unicode
- Unicode
- Universal Coded Character Set
- European Unicode subset (DIN 91379) (covering Greek and Cyrillic characters for the Bulgarian language)
- UTF-8
- Western Latin character sets (computing)
- Windows-1250
- Windows code pages
- ISO/IEC JTC 1/SC 2
- Extended ASCII
Notes