ASCII Table — 0–127, Extended 128–255 and Alt Codes
Every ASCII code 0–127 in decimal, binary, hex and octal, plus the extended 128–255 table, Alt codes and the fix for ñ garbage.
No signup, no trackingQuick answers: ASCII covers 0–127 only. A is 65 (hex 41), a is 97 (hex 61), the digit 0 is 48, space is 32, line feed is 10 and carriage return is 13. Anything above 127 — é, ñ, €, curly quotes — is “extended ASCII”, which in practice means the Windows-1252 code page: é is 233 (Alt+0233), ñ is 241 (Alt+0241), € is 128. In UTF-8 those same characters take two or three bytes, which is why they turn into é or € when a file is opened in the wrong encoding. All of it is in the tables below.
ASCII is 128 characters — 33 control codes and 95 printable characters — each identified by a number from 0 to 127. This is the lookup table: every code in decimal, binary, hexadecimal and octal, with the name and purpose of each control character explained. Ctrl+F to find any character by name or code.
ASCII (American Standard Code for Information Interchange) was standardized in 1963 and remains the base of every modern text encoding, including UTF-8. The first 128 code points of Unicode are identical to ASCII by design, which is why a plain-ASCII file and its UTF-8 version look bit-for-bit the same.
Printable ASCII characters (32–126)
The characters you actually type: space, digits, uppercase and lowercase letters, and punctuation. Every keyboard on Earth speaks these.
| Dec | Hex | Bin | Oct | Char | Notes |
|---|---|---|---|---|---|
| 32 | 20 | 0100000 | 040 | (space) | Space |
| 33 | 21 | 0100001 | 041 | ! | Exclamation |
| 34 | 22 | 0100010 | 042 | " | Double quote |
| 35 | 23 | 0100011 | 043 | # | Hash / number sign |
| 36 | 24 | 0100100 | 044 | $ | Dollar sign |
| 37 | 25 | 0100101 | 045 | % | Percent |
| 38 | 26 | 0100110 | 046 | & | Ampersand |
| 39 | 27 | 0100111 | 047 | ' | Single quote / apostrophe |
| 40 | 28 | 0101000 | 050 | ( | Left parenthesis |
| 41 | 29 | 0101001 | 051 | ) | Right parenthesis |
| 42 | 2A | 0101010 | 052 | * | Asterisk |
| 43 | 2B | 0101011 | 053 | + | Plus |
| 44 | 2C | 0101100 | 054 | , | Comma |
| 45 | 2D | 0101101 | 055 | - | Hyphen / minus |
| 46 | 2E | 0101110 | 056 | . | Period / dot |
| 47 | 2F | 0101111 | 057 | / | Slash |
| 48 | 30 | 0110000 | 060 | 0 | Digit zero |
| 49 | 31 | 0110001 | 061 | 1 | Digit one |
| 50 | 32 | 0110010 | 062 | 2 | Digit two |
| 51 | 33 | 0110011 | 063 | 3 | Digit three |
| 52 | 34 | 0110100 | 064 | 4 | Digit four |
| 53 | 35 | 0110101 | 065 | 5 | Digit five |
| 54 | 36 | 0110110 | 066 | 6 | Digit six |
| 55 | 37 | 0110111 | 067 | 7 | Digit seven |
| 56 | 38 | 0111000 | 070 | 8 | Digit eight |
| 57 | 39 | 0111001 | 071 | 9 | Digit nine |
| 58 | 3A | 0111010 | 072 | : | Colon |
| 59 | 3B | 0111011 | 073 | ; | Semicolon |
| 60 | 3C | 0111100 | 074 | < | Less than |
| 61 | 3D | 0111101 | 075 | = | Equals |
| 62 | 3E | 0111110 | 076 | > | Greater than |
| 63 | 3F | 0111111 | 077 | ? | Question mark |
| 64 | 40 | 1000000 | 100 | @ | At sign |
| 65 | 41 | 1000001 | 101 | A | Uppercase A |
| 66 | 42 | 1000010 | 102 | B | Uppercase B |
| 67 | 43 | 1000011 | 103 | C | Uppercase C |
| 68 | 44 | 1000100 | 104 | D | Uppercase D |
| 69 | 45 | 1000101 | 105 | E | Uppercase E |
| 70 | 46 | 1000110 | 106 | F | Uppercase F |
| 71 | 47 | 1000111 | 107 | G | Uppercase G |
| 72 | 48 | 1001000 | 110 | H | Uppercase H |
| 73 | 49 | 1001001 | 111 | I | Uppercase I |
| 74 | 4A | 1001010 | 112 | J | Uppercase J |
| 75 | 4B | 1001011 | 113 | K | Uppercase K |
| 76 | 4C | 1001100 | 114 | L | Uppercase L |
| 77 | 4D | 1001101 | 115 | M | Uppercase M |
| 78 | 4E | 1001110 | 116 | N | Uppercase N |
| 79 | 4F | 1001111 | 117 | O | Uppercase O |
| 80 | 50 | 1010000 | 120 | P | Uppercase P |
| 81 | 51 | 1010001 | 121 | Q | Uppercase Q |
| 82 | 52 | 1010010 | 122 | R | Uppercase R |
| 83 | 53 | 1010011 | 123 | S | Uppercase S |
| 84 | 54 | 1010100 | 124 | T | Uppercase T |
| 85 | 55 | 1010101 | 125 | U | Uppercase U |
| 86 | 56 | 1010110 | 126 | V | Uppercase V |
| 87 | 57 | 1010111 | 127 | W | Uppercase W |
| 88 | 58 | 1011000 | 130 | X | Uppercase X |
| 89 | 59 | 1011001 | 131 | Y | Uppercase Y |
| 90 | 5A | 1011010 | 132 | Z | Uppercase Z |
| 91 | 5B | 1011011 | 133 | [ | Left bracket |
| 92 | 5C | 1011100 | 134 | \ | Backslash |
| 93 | 5D | 1011101 | 135 | ] | Right bracket |
| 94 | 5E | 1011110 | 136 | ^ | Caret |
| 95 | 5F | 1011111 | 137 | _ | Underscore |
| 96 | 60 | 1100000 | 140 | ` | Backtick / grave accent |
| 97 | 61 | 1100001 | 141 | a | Lowercase a |
| 98 | 62 | 1100010 | 142 | b | Lowercase b |
| 99 | 63 | 1100011 | 143 | c | Lowercase c |
| 100 | 64 | 1100100 | 144 | d | Lowercase d |
| 101 | 65 | 1100101 | 145 | e | Lowercase e |
| 102 | 66 | 1100110 | 146 | f | Lowercase f |
| 103 | 67 | 1100111 | 147 | g | Lowercase g |
| 104 | 68 | 1101000 | 150 | h | Lowercase h |
| 105 | 69 | 1101001 | 151 | i | Lowercase i |
| 106 | 6A | 1101010 | 152 | j | Lowercase j |
| 107 | 6B | 1101011 | 153 | k | Lowercase k |
| 108 | 6C | 1101100 | 154 | l | Lowercase l |
| 109 | 6D | 1101101 | 155 | m | Lowercase m |
| 110 | 6E | 1101110 | 156 | n | Lowercase n |
| 111 | 6F | 1101111 | 157 | o | Lowercase o |
| 112 | 70 | 1110000 | 160 | p | Lowercase p |
| 113 | 71 | 1110001 | 161 | q | Lowercase q |
| 114 | 72 | 1110010 | 162 | r | Lowercase r |
| 115 | 73 | 1110011 | 163 | s | Lowercase s |
| 116 | 74 | 1110100 | 164 | t | Lowercase t |
| 117 | 75 | 1110101 | 165 | u | Lowercase u |
| 118 | 76 | 1110110 | 166 | v | Lowercase v |
| 119 | 77 | 1110111 | 167 | w | Lowercase w |
| 120 | 78 | 1111000 | 170 | x | Lowercase x |
| 121 | 79 | 1111001 | 171 | y | Lowercase y |
| 122 | 7A | 1111010 | 172 | z | Lowercase z |
| 123 | 7B | 1111011 | 173 | { | Left brace |
| 124 | 7C | 1111100 | 174 | | | Pipe / vertical bar |
| 125 | 7D | 1111101 | 175 | } | Right brace |
| 126 | 7E | 1111110 | 176 | ~ | Tilde |
ASCII control characters (0–31 and 127)
These are the non-printable codes. Most were designed for teletypes and are now obsolete, but a handful drive modern text (line feed, carriage return, tab, null) and terminal control (escape).
| Dec | Hex | Bin | Ctrl | Name | Purpose |
|---|---|---|---|---|---|
| 0 | 00 | 0000000 | ^@ | NUL | Null byte — string terminator in C |
| 1 | 01 | 0000001 | ^A | SOH | Start of heading |
| 2 | 02 | 0000010 | ^B | STX | Start of text |
| 3 | 03 | 0000011 | ^C | ETX | End of text — Ctrl+C interrupt in shells |
| 4 | 04 | 0000100 | ^D | EOT | End of transmission — Ctrl+D end of file |
| 5 | 05 | 0000101 | ^E | ENQ | Enquiry |
| 6 | 06 | 0000110 | ^F | ACK | Acknowledge |
| 7 | 07 | 0000111 | ^G | BEL | Bell — plays a terminal beep |
| 8 | 08 | 0001000 | ^H | BS | Backspace |
| 9 | 09 | 0001001 | ^I | HT | Horizontal tab |
| 10 | 0A | 0001010 | ^J | LF | Line feed — Unix newline (\n) |
| 11 | 0B | 0001011 | ^K | VT | Vertical tab |
| 12 | 0C | 0001100 | ^L | FF | Form feed — page break |
| 13 | 0D | 0001101 | ^M | CR | Carriage return — half of Windows newline (\r\n) |
| 14 | 0E | 0001110 | ^N | SO | Shift out |
| 15 | 0F | 0001111 | ^O | SI | Shift in |
| 16 | 10 | 0010000 | ^P | DLE | Data link escape |
| 17 | 11 | 0010001 | ^Q | DC1 | Device control 1 — XON |
| 18 | 12 | 0010010 | ^R | DC2 | Device control 2 |
| 19 | 13 | 0010011 | ^S | DC3 | Device control 3 — XOFF |
| 20 | 14 | 0010100 | ^T | DC4 | Device control 4 |
| 21 | 15 | 0010101 | ^U | NAK | Negative acknowledge |
| 22 | 16 | 0010110 | ^V | SYN | Synchronous idle |
| 23 | 17 | 0010111 | ^W | ETB | End of transmission block |
| 24 | 18 | 0011000 | ^X | CAN | Cancel |
| 25 | 19 | 0011001 | ^Y | EM | End of medium |
| 26 | 1A | 0011010 | ^Z | SUB | Substitute — Ctrl+Z suspend / DOS end-of-file |
| 27 | 1B | 0011011 | ^[ | ESC | Escape — leads every ANSI terminal sequence |
| 28 | 1C | 0011100 | ^\ | FS | File separator |
| 29 | 1D | 0011101 | ^] | GS | Group separator |
| 30 | 1E | 0011110 | ^^ | RS | Record separator |
| 31 | 1F | 0011111 | ^_ | US | Unit separator |
| 127 | 7F | 1111111 | ^? | DEL | Delete — the highest ASCII value |
Convert between characters and codes in code
Excel and Google Sheets — CODE returns the number for a character, CHAR returns the character for a number:
=CODE("A") → 65
=CHAR(65) → A
=CHAR(9) → tab character
=CHAR(10) → line feed (use in a wrapped cell for a manual line break)
Python — ord and chr do the same:
ord("A") # 65
chr(65) # "A"
chr(10) # "\n"
JavaScript — charCodeAt and String.fromCharCode:
"A".charCodeAt(0) // 65
String.fromCharCode(65) // "A"What comes after 127 — extended ASCII and UTF-8
ASCII ends at 127. The bytes from 128 to 255 are NOT standard ASCII — they belong to whichever 8-bit codepage the file was saved in (Latin-1 / ISO-8859-1 in Western Europe, Windows-1252, various regional codepages). "Extended ASCII" is really a marketing term for that legacy byte range, and different codepages assign different characters to the same byte, which is the classic cause of "mojibake" (garbled characters) when a file is opened in the wrong encoding.
UTF-8 solved this by encoding every Unicode character (over 150,000 of them and counting) as one to four bytes, with the property that any pure-ASCII text is bit-for-bit identical in UTF-8. That is why saving a plain English text file as ASCII or as UTF-8 produces the same file. The binary-hex reference on this site covers the byte-level view, and the HTML entities tool converts between characters and their HTML entity names for the ones you cannot type directly.
Extended ASCII table (128–255) — Windows-1252
This is the table most people mean by “extended ASCII”: the Windows-1252 code page, the default on Western-language Windows and the encoding Excel still uses when you save a plain “CSV (Comma delimited)” file. Codes 160–255 are identical in ISO-8859-1 (Latin-1) and match Unicode U+00A0–U+00FF one-to-one. Codes 128–159 are where the two disagree: Windows-1252 puts €, the curly quotes, the dashes and ™ there, while Latin-1 leaves them as invisible control codes. Five codes (129, 141, 143, 144 and 157) are unassigned. The last column is the Windows keystroke that types each character — see the next section.
| Dec | Hex | Bin | Char | Unicode | Alt code |
|---|---|---|---|---|---|
| 128 | 80 | 10000000 | € | U+20AC | Alt+0128 |
| 129 | 81 | 10000001 | (unassigned) | — | — |
| 130 | 82 | 10000010 | ‚ | U+201A | Alt+0130 |
| 131 | 83 | 10000011 | ƒ | U+0192 | Alt+0131 |
| 132 | 84 | 10000100 | „ | U+201E | Alt+0132 |
| 133 | 85 | 10000101 | … | U+2026 | Alt+0133 |
| 134 | 86 | 10000110 | † | U+2020 | Alt+0134 |
| 135 | 87 | 10000111 | ‡ | U+2021 | Alt+0135 |
| 136 | 88 | 10001000 | ˆ | U+02C6 | Alt+0136 |
| 137 | 89 | 10001001 | ‰ | U+2030 | Alt+0137 |
| 138 | 8A | 10001010 | Š | U+0160 | Alt+0138 |
| 139 | 8B | 10001011 | ‹ | U+2039 | Alt+0139 |
| 140 | 8C | 10001100 | Œ | U+0152 | Alt+0140 |
| 141 | 8D | 10001101 | (unassigned) | — | — |
| 142 | 8E | 10001110 | Ž | U+017D | Alt+0142 |
| 143 | 8F | 10001111 | (unassigned) | — | — |
| 144 | 90 | 10010000 | (unassigned) | — | — |
| 145 | 91 | 10010001 | ‘ | U+2018 | Alt+0145 |
| 146 | 92 | 10010010 | ’ | U+2019 | Alt+0146 |
| 147 | 93 | 10010011 | “ | U+201C | Alt+0147 |
| 148 | 94 | 10010100 | ” | U+201D | Alt+0148 |
| 149 | 95 | 10010101 | • | U+2022 | Alt+0149 |
| 150 | 96 | 10010110 | – | U+2013 | Alt+0150 |
| 151 | 97 | 10010111 | — | U+2014 | Alt+0151 |
| 152 | 98 | 10011000 | ˜ | U+02DC | Alt+0152 |
| 153 | 99 | 10011001 | ™ | U+2122 | Alt+0153 |
| 154 | 9A | 10011010 | š | U+0161 | Alt+0154 |
| 155 | 9B | 10011011 | › | U+203A | Alt+0155 |
| 156 | 9C | 10011100 | œ | U+0153 | Alt+0156 |
| 157 | 9D | 10011101 | (unassigned) | — | — |
| 158 | 9E | 10011110 | ž | U+017E | Alt+0158 |
| 159 | 9F | 10011111 | Ÿ | U+0178 | Alt+0159 |
| 160 | A0 | 10100000 | (no-break space) | U+00A0 | Alt+0160 |
| 161 | A1 | 10100001 | ¡ | U+00A1 | Alt+0161 |
| 162 | A2 | 10100010 | ¢ | U+00A2 | Alt+0162 |
| 163 | A3 | 10100011 | £ | U+00A3 | Alt+0163 |
| 164 | A4 | 10100100 | ¤ | U+00A4 | Alt+0164 |
| 165 | A5 | 10100101 | ¥ | U+00A5 | Alt+0165 |
| 166 | A6 | 10100110 | ¦ | U+00A6 | Alt+0166 |
| 167 | A7 | 10100111 | § | U+00A7 | Alt+0167 |
| 168 | A8 | 10101000 | ¨ | U+00A8 | Alt+0168 |
| 169 | A9 | 10101001 | © | U+00A9 | Alt+0169 |
| 170 | AA | 10101010 | ª | U+00AA | Alt+0170 |
| 171 | AB | 10101011 | « | U+00AB | Alt+0171 |
| 172 | AC | 10101100 | ¬ | U+00AC | Alt+0172 |
| 173 | AD | 10101101 | (soft hyphen) | U+00AD | Alt+0173 |
| 174 | AE | 10101110 | ® | U+00AE | Alt+0174 |
| 175 | AF | 10101111 | ¯ | U+00AF | Alt+0175 |
| 176 | B0 | 10110000 | ° | U+00B0 | Alt+0176 |
| 177 | B1 | 10110001 | ± | U+00B1 | Alt+0177 |
| 178 | B2 | 10110010 | ² | U+00B2 | Alt+0178 |
| 179 | B3 | 10110011 | ³ | U+00B3 | Alt+0179 |
| 180 | B4 | 10110100 | ´ | U+00B4 | Alt+0180 |
| 181 | B5 | 10110101 | µ | U+00B5 | Alt+0181 |
| 182 | B6 | 10110110 | ¶ | U+00B6 | Alt+0182 |
| 183 | B7 | 10110111 | · | U+00B7 | Alt+0183 |
| 184 | B8 | 10111000 | ¸ | U+00B8 | Alt+0184 |
| 185 | B9 | 10111001 | ¹ | U+00B9 | Alt+0185 |
| 186 | BA | 10111010 | º | U+00BA | Alt+0186 |
| 187 | BB | 10111011 | » | U+00BB | Alt+0187 |
| 188 | BC | 10111100 | ¼ | U+00BC | Alt+0188 |
| 189 | BD | 10111101 | ½ | U+00BD | Alt+0189 |
| 190 | BE | 10111110 | ¾ | U+00BE | Alt+0190 |
| 191 | BF | 10111111 | ¿ | U+00BF | Alt+0191 |
| 192 | C0 | 11000000 | À | U+00C0 | Alt+0192 |
| 193 | C1 | 11000001 | Á | U+00C1 | Alt+0193 |
| 194 | C2 | 11000010 | Â | U+00C2 | Alt+0194 |
| 195 | C3 | 11000011 | Ã | U+00C3 | Alt+0195 |
| 196 | C4 | 11000100 | Ä | U+00C4 | Alt+0196 |
| 197 | C5 | 11000101 | Å | U+00C5 | Alt+0197 |
| 198 | C6 | 11000110 | Æ | U+00C6 | Alt+0198 |
| 199 | C7 | 11000111 | Ç | U+00C7 | Alt+0199 |
| 200 | C8 | 11001000 | È | U+00C8 | Alt+0200 |
| 201 | C9 | 11001001 | É | U+00C9 | Alt+0201 |
| 202 | CA | 11001010 | Ê | U+00CA | Alt+0202 |
| 203 | CB | 11001011 | Ë | U+00CB | Alt+0203 |
| 204 | CC | 11001100 | Ì | U+00CC | Alt+0204 |
| 205 | CD | 11001101 | Í | U+00CD | Alt+0205 |
| 206 | CE | 11001110 | Î | U+00CE | Alt+0206 |
| 207 | CF | 11001111 | Ï | U+00CF | Alt+0207 |
| 208 | D0 | 11010000 | Ð | U+00D0 | Alt+0208 |
| 209 | D1 | 11010001 | Ñ | U+00D1 | Alt+0209 |
| 210 | D2 | 11010010 | Ò | U+00D2 | Alt+0210 |
| 211 | D3 | 11010011 | Ó | U+00D3 | Alt+0211 |
| 212 | D4 | 11010100 | Ô | U+00D4 | Alt+0212 |
| 213 | D5 | 11010101 | Õ | U+00D5 | Alt+0213 |
| 214 | D6 | 11010110 | Ö | U+00D6 | Alt+0214 |
| 215 | D7 | 11010111 | × | U+00D7 | Alt+0215 |
| 216 | D8 | 11011000 | Ø | U+00D8 | Alt+0216 |
| 217 | D9 | 11011001 | Ù | U+00D9 | Alt+0217 |
| 218 | DA | 11011010 | Ú | U+00DA | Alt+0218 |
| 219 | DB | 11011011 | Û | U+00DB | Alt+0219 |
| 220 | DC | 11011100 | Ü | U+00DC | Alt+0220 |
| 221 | DD | 11011101 | Ý | U+00DD | Alt+0221 |
| 222 | DE | 11011110 | Þ | U+00DE | Alt+0222 |
| 223 | DF | 11011111 | ß | U+00DF | Alt+0223 |
| 224 | E0 | 11100000 | à | U+00E0 | Alt+0224 |
| 225 | E1 | 11100001 | á | U+00E1 | Alt+0225 |
| 226 | E2 | 11100010 | â | U+00E2 | Alt+0226 |
| 227 | E3 | 11100011 | ã | U+00E3 | Alt+0227 |
| 228 | E4 | 11100100 | ä | U+00E4 | Alt+0228 |
| 229 | E5 | 11100101 | å | U+00E5 | Alt+0229 |
| 230 | E6 | 11100110 | æ | U+00E6 | Alt+0230 |
| 231 | E7 | 11100111 | ç | U+00E7 | Alt+0231 |
| 232 | E8 | 11101000 | è | U+00E8 | Alt+0232 |
| 233 | E9 | 11101001 | é | U+00E9 | Alt+0233 |
| 234 | EA | 11101010 | ê | U+00EA | Alt+0234 |
| 235 | EB | 11101011 | ë | U+00EB | Alt+0235 |
| 236 | EC | 11101100 | ì | U+00EC | Alt+0236 |
| 237 | ED | 11101101 | í | U+00ED | Alt+0237 |
| 238 | EE | 11101110 | î | U+00EE | Alt+0238 |
| 239 | EF | 11101111 | ï | U+00EF | Alt+0239 |
| 240 | F0 | 11110000 | ð | U+00F0 | Alt+0240 |
| 241 | F1 | 11110001 | ñ | U+00F1 | Alt+0241 |
| 242 | F2 | 11110010 | ò | U+00F2 | Alt+0242 |
| 243 | F3 | 11110011 | ó | U+00F3 | Alt+0243 |
| 244 | F4 | 11110100 | ô | U+00F4 | Alt+0244 |
| 245 | F5 | 11110101 | õ | U+00F5 | Alt+0245 |
| 246 | F6 | 11110110 | ö | U+00F6 | Alt+0246 |
| 247 | F7 | 11110111 | ÷ | U+00F7 | Alt+0247 |
| 248 | F8 | 11111000 | ø | U+00F8 | Alt+0248 |
| 249 | F9 | 11111001 | ù | U+00F9 | Alt+0249 |
| 250 | FA | 11111010 | ú | U+00FA | Alt+0250 |
| 251 | FB | 11111011 | û | U+00FB | Alt+0251 |
| 252 | FC | 11111100 | ü | U+00FC | Alt+0252 |
| 253 | FD | 11111101 | ý | U+00FD | Alt+0253 |
| 254 | FE | 11111110 | þ | U+00FE | Alt+0254 |
| 255 | FF | 11111111 | ÿ | U+00FF | Alt+0255 |
Alt codes for symbols and accented letters (Windows and Mac)
Windows has two Alt-code systems, which is why the same character shows up online with two different numbers. Alt plus a number WITHOUT a leading zero uses the old DOS code page (437 on US Windows, 850 on most European and Latin American Windows); Alt plus 0 plus a number uses Windows-1252 — the table above. The Alt+0 codes are the same on every Western-language Windows, so they are the safer ones to memorize.
- Turn on Num Lock.
- Hold down the left Alt key.
- Type the number on the numeric keypad — the digit row above the letters does not work.
- Release Alt and the character appears.
- No numeric keypad (most laptops)? Press Win + . (period) for the emoji and symbol panel, or open Character Map (charmap). On a Mac, use the Option shortcuts in the table.
| Char | Alt (DOS 437) | Alt+0 (Windows-1252) | Mac (US keyboard) |
|---|---|---|---|
| ° | Alt+248 | Alt+0176 | Option+Shift+8 |
| © | — | Alt+0169 | Option+G |
| ® | — | Alt+0174 | Option+R |
| ™ | — | Alt+0153 | Option+2 |
| € | — | Alt+0128 | Option+Shift+2 |
| £ | Alt+156 | Alt+0163 | Option+3 |
| ¢ | Alt+155 | Alt+0162 | Option+4 |
| ¥ | Alt+157 | Alt+0165 | Option+Y |
| ± | Alt+241 | Alt+0177 | Option+Shift+= |
| × | — | Alt+0215 | — |
| ÷ | Alt+246 | Alt+0247 | Option+/ |
| ½ | Alt+171 | Alt+0189 | — |
| ² | Alt+253 | Alt+0178 | — |
| • | Alt+7 | Alt+0149 | Option+8 |
| — (em dash) | — | Alt+0151 | Option+Shift+- |
| – (en dash) | — | Alt+0150 | Option+- |
| é | Alt+130 | Alt+0233 | Option+E, then E |
| ñ | Alt+164 | Alt+0241 | Option+N, then N |
| ¿ | Alt+168 | Alt+0191 | Option+Shift+? |
The Spanish letters follow a pattern worth knowing: in the DOS codes the lowercase accented vowels sit together at Alt+160 (á), 161 (í), 162 (ó) and 163 (ú), with é off on its own at 130; ñ is 164 and Ñ is 165. If the character has to go into HTML rather than a document, the HTML entities reference lists the named entities (ñ, é) instead.
What about a check mark (✓)? It is not ASCII and not in Windows-1252, so there is no true Alt code for it. What works: on Windows, Win + . (period) opens the symbol panel, which has ✓; in Excel, =UNICHAR(10003) gives ✓ and =UNICHAR(10004) the heavy ✔; in Word, type ü (Alt+0252) and switch the font to Wingdings. The Alt+251 trick you will see online gives √ (a square-root sign often used as a check) on English Windows, but ¹ on Spanish-language Windows. On a Mac, Option+V types √.
Why you see ñ instead of ñ (mojibake)
When UTF-8 text is opened as Windows-1252, every non-ASCII character turns into two or three wrong ones. UTF-8 stores ñ as two bytes, C3 B1; Windows-1252 reads each byte on its own — C3 is Ã, B1 is ± — so “España” becomes “España”. It is the classic result of opening a CSV exported from a website, an app or a database by double-clicking it in Excel. The damage is so regular you can read it backwards:
| Character | UTF-8 bytes | Shows up as (read as Windows-1252) |
|---|---|---|
| ñ | C3 B1 | ñ |
| Ñ | C3 91 | Ñ |
| á | C3 A1 | á |
| é | C3 A9 | é |
| É | C3 89 | É |
| í | C3 AD | Ã followed by an invisible soft hyphen |
| ó | C3 B3 | ó |
| ú | C3 BA | ú |
| ü | C3 BC | ü |
| ¿ | C2 BF | ¿ |
| ¡ | C2 A1 | ¡ |
| € | E2 82 AC | € |
| ’ (curly apostrophe) | E2 80 99 | ’ |
| “ (curly quote) | E2 80 9C | “ |
| — (em dash) | E2 80 94 | — |
The opposite mistake looks different. A file saved as Windows-1252 or Latin-1 stores ñ as the single byte F1, which is not valid UTF-8 on its own, so a UTF-8 reader shows the replacement character instead: “Espa�a”. Rule of thumb: à and  pairs mean UTF-8 read as 1252; lone � diamonds mean 1252 read as UTF-8.
Excel — open a UTF-8 CSV correctly:
Data → From Text/CSV → File origin: 65001 : Unicode (UTF-8)
Excel — save so other tools read it correctly:
File → Save As → "CSV UTF-8 (Comma delimited)"
Python — repair text that is already mangled (UTF-8 read as 1252):
"España".encode("cp1252").decode("utf-8") # "España"
# messier cases: pip install ftfy, then ftfy.fix_text(s)
Python — read a legacy Windows file without the � marks:
open("data.csv", encoding="cp1252").read()
HTML — declare the encoding at the top of <head>:
<meta charset="utf-8">Source: sofritools.com/reference/ascii-table/