Windows-1252 Table
| Byte | Char | Unicode | Dec | UTF-8 | Latin-1 counterpart |
|---|---|---|---|---|---|
| 80 | € | U+20AC Euro Sign | 128 | E2 82 AC | C1 control (Padding Character) - the Latin-1 slot Windows replaced |
| 81 | – | undefined | 129 | – | unassigned (5 such slots); browsers substitute the Windows glyph or nothing |
| 82 | ‚ | U+201A Single Low-9 Quotation Mark | 130 | E2 80 9A | C1 control (Break Permitted Here) - the Latin-1 slot Windows replaced |
| 83 | ƒ | U+0192 Latin Small Letter F With Hook | 131 | C6 92 | C1 control (No Break Here) - the Latin-1 slot Windows replaced |
| 84 | „ | U+201E Double Low-9 Quotation Mark | 132 | E2 80 9E | C1 control (Index) - the Latin-1 slot Windows replaced |
| 85 | … | U+2026 Horizontal Ellipsis | 133 | E2 80 A6 | C1 control (Next Line) - the Latin-1 slot Windows replaced |
| 86 | † | U+2020 Dagger | 134 | E2 80 A0 | C1 control (Start Of Selected Area) - the Latin-1 slot Windows replaced |
| 87 | ‡ | U+2021 Double Dagger | 135 | E2 80 A1 | C1 control (End Of Selected Area) - the Latin-1 slot Windows replaced |
| 88 | ˆ | U+02C6 Modifier Letter Circumflex Accent | 136 | CB 86 | C1 control (Character Tabulation Set) - the Latin-1 slot Windows replaced |
| 89 | ‰ | U+2030 Per Mille Sign | 137 | E2 80 B0 | C1 control (Character Tabulation With Justification) - the Latin-1 slot Windows replaced |
| 8A | Š | U+0160 Latin Capital Letter S With Caron | 138 | C5 A0 | C1 control (Line Tabulation Set) - the Latin-1 slot Windows replaced |
| 8B | ‹ | U+2039 Single Left-Pointing Angle Quotation Mark | 139 | E2 80 B9 | C1 control (Partial Line Forward) - the Latin-1 slot Windows replaced |
| 8C | Œ | U+0152 Latin Capital Ligature Oe | 140 | C5 92 | C1 control (Partial Line Backward) - the Latin-1 slot Windows replaced |
| 8D | – | undefined | 141 | – | unassigned (5 such slots); browsers substitute the Windows glyph or nothing |
| 8E | Ž | U+017D Latin Capital Letter Z With Caron | 142 | C5 BD | C1 control (Single Shift Two) - the Latin-1 slot Windows replaced |
| 8F | – | undefined | 143 | – | unassigned (5 such slots); browsers substitute the Windows glyph or nothing |
| 90 | – | undefined | 144 | – | unassigned (5 such slots); browsers substitute the Windows glyph or nothing |
| 91 | ‘ | U+2018 Left Single Quotation Mark | 145 | E2 80 98 | C1 control (Private Use One) - the Latin-1 slot Windows replaced |
| 92 | ’ | U+2019 Right Single Quotation Mark | 146 | E2 80 99 | C1 control (Private Use Two) - the Latin-1 slot Windows replaced |
| 93 | “ | U+201C Left Double Quotation Mark | 147 | E2 80 9C | C1 control (Set Transmit State) - the Latin-1 slot Windows replaced |
| 94 | ” | U+201D Right Double Quotation Mark | 148 | E2 80 9D | C1 control (Cancel Character) - the Latin-1 slot Windows replaced |
| 95 | • | U+2022 Bullet | 149 | E2 80 A2 | C1 control (Message Waiting) - the Latin-1 slot Windows replaced |
| 96 | – | U+2013 En Dash | 150 | E2 80 93 | C1 control (Start Of Guarded Area) - the Latin-1 slot Windows replaced |
| 97 | — | U+2014 Em Dash | 151 | E2 80 94 | C1 control (End Of Guarded Area) - the Latin-1 slot Windows replaced |
| 98 | ˜ | U+02DC Small Tilde | 152 | CB 9C | C1 control (Start Of String) - the Latin-1 slot Windows replaced |
| 99 | ™ | U+2122 Trade Mark Sign | 153 | E2 84 A2 | C1 control - the Latin-1 slot Windows replaced |
| 9A | š | U+0161 Latin Small Letter S With Caron | 154 | C5 A1 | C1 control - the Latin-1 slot Windows replaced |
| 9B | › | U+203A Single Right-Pointing Angle Quotation Mark | 155 | E2 80 BA | C1 control - the Latin-1 slot Windows replaced |
| 9C | œ | U+0153 Latin Small Ligature Oe | 156 | C5 93 | C1 control - the Latin-1 slot Windows replaced |
| 9D | – | undefined | 157 | – | unassigned (5 such slots); browsers substitute the Windows glyph or nothing |
| 9E | ž | U+017E Latin Small Letter Z With Caron | 158 | C5 BE | C1 control (Single Graphic Character Introducer) - the Latin-1 slot Windows replaced |
| 9F | Ÿ | U+0178 Latin Capital Letter Y With Diaeresis | 159 | C5 B8 | C1 control (Single Graphic Character Introducer) - the Latin-1 slot Windows replaced |
Windows-1252 - code page 1252, CP-1252, the encoding Microsoft shipped as the default “ANSI code page” across the Americas, Western Europe, Oceania and much of Africa - is the byte format an entire generation of documents never asked about. Wikipedia’s headline fact: it is “the most-used single-byte character encoding in the world,” and as of September 2026 it is still effectively served on 9.3% of static web pages.
Everything interesting about it lives in 32 bytes. The encoding started as ISO 8859-1 (Latin-1), but from Windows 2.0 Microsoft filled the 0x80–0x9F range - the 32 slots ISO had reserved for unprintable C1 control codes - with the characters Western office work actually needed: curly quotation marks, en and em dashes, the ellipsis, trademark and euro signs, and French œ. Those 27 characters are the whole difference between the two encodings, and this chart lists every one of them.
The table also carries the modern answer key: each byte’s UTF-8 encoding. That column is how you read mojibake - when a UTF-8 apostrophe (E2 80 99) is wrongly decoded as Windows-1252 it becomes ’, and every broken string you have ever pasted from an old export follows the same arithmetic.
How to use
- Identify the encoding by its garbage: text that shows ’ where an apostrophe should be, or  before accented letters, is UTF-8 bytes being read as Windows-1252. Find the first garbage glyph in this chart’s char column and the UTF-8 column tells you which bytes produced it.
- Use the Dec column for Alt codes: Windows Alt+0146 still produces ’ because 146 decimal is byte 0x92 in this table - the decimal column is the numeric identity of each byte in the divergent range.
- Do not declare ISO 8859-1 in new work: the WHATWG Encoding Standard requires browsers to treat that label as Windows-1252, so the declaration is both wrong and ignored. Prefer UTF-8 everywhere - the <a href="https://tooldune.com/utf8-encoding-table/" rel="noopener">UTF-8 encoding table</a> on this site shows its byte grammar.
Frequently asked questions
What is the difference between Windows-1252 and ISO 8859-1?
Exactly 32 bytes. Windows-1252 equals Latin-1 for 0x00–0x7F and 0xA0–0xFF, but re-purposes the 32 control-code slots of 0x80–0x9F for printable characters - curly quotes, dashes, ellipsis, euro - of which 27 are defined and 5 remain unassigned. Wikipedia dates the split to Windows 2.0.
Why do my smart quotes show up as garbage?
Because the document is UTF-8 but something reads it as Windows-1252: a UTF-8 right single quote is the three bytes E2 80 99, and Windows-1252 renders those as ’. Every curly quote, dash and ellipsis in the divergent range produces this three-glyph signature - this table’s UTF-8 column decodes it.
Is Windows-1252 still used in 2026?
Yes, enough to matter: Wikipedia’s September 2026 numbers are 9.3% of static web pages (effectively) against only 0.2% declared as Windows-1252 and 1.0% including declared ISO 8859-1 - the gap exists because most sites are served programmatically, and because HTML5 forces browsers to treat a Latin-1 declaration as Windows-1252 anyway. Legacy exports, CSVs and old CMS databases keep it alive.
Does Windows-1252 cover my language?
Western European languages broadly, with famous holes Wikipedia tabulates: no uppercase ị for German (official only since 2017), no Slovene č (substituted with č̇), no Dutch Ĭ/ĭ pair, and some languages lack their standard quotation marks (German „quotes“). If a language needs more than these, it needs Unicode.
What encoding should I use instead?
UTF-8 - “almost all websites now use the multi-byte character encoding UTF-8, another superset of ASCII,” per Wikipedia, and every byte in this chart has a UTF-8 equivalent (the table’s UTF-8 column lists them). New files, APIs and databases should declare UTF-8; the legacy table is for reading old data, not writing new.