Extended ASCII Table
Reference table for Extended ASCII character codes (128–255): decimal, hex and character.
Back to all tools on ToolForge
Extended ASCII (128–255)
| Dec | Hex | Char | Dec | Hex | Char |
|---|
About Extended ASCII Table
This Extended ASCII table lists character codes from 128 to 255 in decimal, hexadecimal, and character form. The displayed characters depend on your system's encoding—modern systems use UTF-8, while the table shows Windows-1252 (CP-1252) characters for the 128-159 range and ISO-8859-1 for 160-255.
It is useful for encoding references, special character lookups, debugging character display issues, and understanding legacy file formats that predate Unicode.
ASCII vs Extended ASCII vs Unicode
| Encoding | Bits | Characters | Range | Status |
|---|---|---|---|---|
| ASCII | 7 | 128 | 0-127 | Base standard, universal |
| Extended ASCII | 8 | 256 | 0-255 | Legacy (various incompatible variants) |
| ISO-8859-1 (Latin-1) | 8 | 256 | 0-255 | Legacy European encoding |
| Windows-1252 | 8 | 256 | 0-255 | Legacy Windows encoding |
| UTF-8 | 8-32 | 1,112,064 | 0-0x10FFFF | Modern standard (98%+ web usage) |
Windows-1252 Control Range (128-159)
Unlike ISO-8859-1 which defines 128-159 as C1 control codes, Windows-1252 uses this range for printable punctuation and symbols.
Windows-1252 printable characters in 128-159 range: 128 € Euro sign 144 [unused] 129 [unused] 145 ' Left single quote 130 ‚ Single low quote 146 ' Right single quote 131 ƒ Latin small f hook 147 " Left double quote 132 „ Double low quote 148 " Right double quote 133 … Horizontal ellipsis 149 • Bullet 134 † Dagger 150 – En dash 135 ‡ Double dagger 151 — Em dash 136 ˆ Modifier circumflex 152 ˜ Small tilde 137 ‰ Per mille 153 ™ Trade mark sign 138 Š S caron 154 š Small s caron 139 ‹ Single left angle 155 œ OE ligature 140 Œ OE ligature 156 [unused] 141 [unused] 157 [unused] 142 Ž Z caron 158 ž Small z caron 143 [unused] 159 Ÿ Y with diaeresis
Common Extended ASCII Symbols (160-255)
| Dec | Hex | Char | Name | HTML Entity |
|---|---|---|---|---|
| 160 | A0 | Non-breaking space | | |
| 161 | A1 | ¡ | Inverted exclamation | ¡ |
| 162 | A2 | ¢ | Cent sign | ¢ |
| 163 | A3 | £ | Pound sign | £ |
| 164 | A4 | ¤ | Currency sign | ¤ |
| 165 | A5 | ¥ | Yen sign | ¥ |
| 166 | A6 | ¦ | Broken bar | ¦ |
| 167 | A7 | § | Section sign | § |
| 169 | A9 | © | Copyright sign | © |
| 170 | AA | ª | Feminine ordinal | ª |
| 171 | AB | « | Left guillemet | « |
| 174 | AE | ® | Registered sign | ® |
| 175 | AF | ¯ | Macron | ¯ |
| 176 | B0 | ° | Degree sign | ° |
| 177 | B1 | ± | Plus-minus sign | ± |
| 182 | B6 | ¶ | Pilcrow sign | ¶ |
| 183 | B7 | · | Middle dot | · |
| 187 | BB | » | Right guillemet | » |
| 191 | BF | ¿ | Inverted question | ¿ |
| 215 | D7 | × | Multiplication sign | × |
| 247 | F7 | ÷ | Division sign | ÷ |
Character Encoding Conversion
JavaScript:
// Encode string to bytes in specific encoding
const encoder = new TextEncoder(); // UTF-8 only
const bytes = encoder.encode("Hello");
// Decode bytes from specific encoding
const decoder = new TextDecoder('windows-1252');
const text = decoder.decode(bytes);
Python:
# String to bytes (encode)
text = "Hello"
utf8_bytes = text.encode('utf-8')
latin1_bytes = text.encode('latin-1')
# Bytes to string (decode)
decoded = latin1_bytes.decode('latin-1')
text = utf8_bytes.decode('utf-8')
Node.js Buffer:
// Convert between encodings
const buf = Buffer.from(input, 'latin1');
const utf8String = buf.toString('utf8');
Command line (iconv):
iconv -f ISO-8859-1 -t UTF-8 input.txt > output.txt
iconv -f CP1252 -t UTF-8 windows.txt > unicode.txt
Why UTF-8 Replaced Extended ASCII
| Issue | Extended ASCII | UTF-8 |
|---|---|---|
| Character coverage | 256 characters max | Over 1 million characters |
| Language support | Single script per variant | All writing systems unified |
| Compatibility | Multiple incompatible variants | Single universal standard |
| ASCII compatibility | Yes (0-127 identical) | Yes (0-127 identical) |
| Web adoption | Legacy/deprecated | 98%+ of all web pages |
| Emoji support | None | Full emoji set |
Frequently Asked Questions
- What is Extended ASCII?
- Extended ASCII refers to character encodings that use 8 bits per character, providing 256 possible characters (0-255). The first 128 (0-127) are standard ASCII. The extended range (128-255) varies by encoding—common variants include ISO-8859-1 (Latin-1), Windows-1252, and ISO-8859-15. These encodings add accented letters, currency symbols, and special characters.
- What is the difference between ASCII and Extended ASCII?
- Standard ASCII uses 7 bits (0-127) and includes basic Latin letters, digits, and control characters. Extended ASCII uses 8 bits (0-255), doubling the character set. The upper 128 characters (128-255) are not standardized—different encodings define them differently. Windows-1252 adds smart quotes and the euro symbol; Latin-1 adds accented European characters.
- What encoding should I use for web pages?
- UTF-8 is the universal standard for web pages. It's backward-compatible with ASCII (0-127 are identical) and supports all Unicode characters (over 140,000 characters from all writing systems). UTF-8 replaced legacy encodings like Latin-1 and Windows-1252. Always declare <meta charset="UTF-8"> in HTML documents.
- What are the common Extended ASCII characters?
- Common Extended ASCII characters include: 160 (non-breaking space), 162-165 (currency symbols ¢£¤¥), 167 (section sign §), 169 (copyright ©), 176 (degree °), 177 (plus-minus ±), 182 (pilcrow ¶), 187 (right guillemet »), 215 (multiplication ×), 247 (division ÷). Windows-1252 adds 128-159 with smart quotes and dashes.
- What is Windows-1252 encoding?
- Windows-1252 (also called CP-1252) is a Microsoft extension of ISO-8859-1 that uses the 128-159 range for printable characters instead of control codes. It includes smart quotes (145-148: '"'), en/em dashes (150-151), trademark (153), euro (128), and other typography symbols. It's the default encoding for legacy Windows text files.
- How do I convert Extended ASCII to UTF-8?
- Most modern tools handle conversion automatically. In programming: JavaScript uses TextEncoder/TextDecoder with encoding parameter; Python uses .encode('utf-8') and bytes.decode('cp1252'); Node.js uses Buffer.from(data, 'latin1').toString('utf8'). For files, use iconv: iconv -f ISO-8859-1 -t UTF-8 input.txt. Always backup before batch conversion.