Back
Asciify Logo
Asciify
DELü

ASCII 128

Euro signUppercase C with cedilla

ASCII 128 is € on Windows and Ç in old DOS.

€ (Euro Sign) is byte 128 in Windows-1252, Unicode U+20AC. If prices on your page show € instead of €, you're looking at UTF-8 read as Windows-1252. UTF-8 stores the euro sign as three bytes, E2 82 AC, and each byte gets drawn as its own character. Usually the fix is declaring UTF-8 in the Content-Type header or a meta charset tag. If the garbage survives that, the text was saved double-encoded and has to be converted back in the database or file. The reverse mix-up, a lone 0x80 byte in a file read as UTF-8, shows as the � replacement character. ISO-8859-1 is older than the euro and has no € at all (128 is an invisible control code there), which is why € in HTML is invalid even though browsers quietly render it as €. Use € or €. One more trap: Alt+0128 gives €, but drop the zero and Alt+128 pulls from the DOS table and gives you Ç.

Ç (Capital C with Cedilla) is byte 128 in code page 437, the original IBM PC character set, and maps to Unicode U+00C7. The classic trap: open an old DOS text file in an editor that assumes Windows-1252 and every Ç turns into €, because that's what byte 128 means there. FRANÇAIS becomes FRAN€AIS. Code page 850 kept Ç at 128 as well, so Western European DOS files break the same way. Small ç is 135 in DOS.

CurrencyLatin Letter

Technical Details

Technical Details

Code Example

</>
#include <stdio.h>
int main(void) {
/* On Windows (code page 1252) byte 128 is €.
Modern terminals expect UTF-8, so print the code point, not the byte. */
printf("\u20AC\n"); /* UTF-8: E2 82 AC */
unsigned char b = 128; /* the raw Windows-1252 byte */
printf("%d 0x%02X\n", b, b); /* 128 0x80 */
return 0;
}

Code Example

</>
#include <stdio.h>
int main(void) {
/* Byte 128 is Ç only on a console using code page 437
(chcp 437 on Windows, or DOSBox). On a UTF-8 terminal the
lone byte 0x80 is invalid and prints as garbage, often �. */
putchar(128);
/* char is signed on x86, so a plain char holding 0x80 is -128.
Use unsigned char when you compare or index by byte value. */
char c = (char)128;
unsigned char u = 128;
printf("\n%d %d\n", c, u); /* -128 128 */
/* Portable: print the Unicode character as UTF-8 instead. */
printf("\u00C7\n"); /* C3 87 */
return 0;
}

How to Type It

Windows
Hold Alt and type 0128 on the numeric keypad, with Num Lock on. The leading zero picks the Windows code page. No numeric keypad? In Word, type 20AC and press Alt+X.
Mac
Press Option+Shift+2.
Linux
In GNOME, or any desktop running IBus, press Ctrl+Shift+U, type 20ac, then Space. With a Compose key set up, press Compose, c, equals.
Phone
iPhone: tap 123, then #+= and tap €. Android (Gboard): tap ?123, then =\< and tap €.

How to Type It

Windows
Hold Alt and type 128 on the numeric keypad, with no leading zero. Windows reads it as a DOS code and inserts Ç.

Ç is also ASCII 199 on Windows, which has the full guide.

Frequently Asked Questions

  • It depends on the language you're writing in, not on the currency. English puts it in front with no space, so €5. German and French put it after, with a space: 5 €. Dutch puts it in front but with a space, € 5. In tables or anywhere language is unclear, the ISO code EUR followed by a space sidesteps the question.

  • Something in your code is encoding text as Latin-1, and Latin-1 has no slot for €. Switch that step to UTF-8 with `text.encode('utf-8')`. If the receiving side really expects one byte per character, use 'cp1252' instead, which stores € as byte 128. Don't reach for errors='ignore', because it silently deletes every euro sign.

  • The formatter puts a non-breaking space (U+00A0) before €, while the string you typed has a normal space. They look identical but don't compare equal. Build the expected value with `\u00A0` in it, or normalize the output with `.replace(/\s/g, ' ')` before comparing, since \s in JavaScript matches the non-breaking space too.

  • The file was saved as ISO-8859-15 (Latin-9) and opened as ISO-8859-1 or Windows-1252. Latin-9 moved € to byte 164, and in the other two sets byte 164 is the generic currency sign ¤. Reopen the file as ISO-8859-15 and convert it to UTF-8 so the question doesn't come back.

  • Without a leading zero, Alt codes read the DOS table, and 128 is Ç there. Add the zero, Alt+0128, and Windows looks in Windows-1252, where 128 is €. Ç itself has a zero-style code too, Alt+0199. On a laptop with no numeric keypad neither code works, so use AltGr+E, which gives € on German, French, Spanish and Italian keyboards.

Frequently Asked Questions

  • Without a leading zero, Alt codes read the DOS table, and 128 is Ç there. Add the zero, Alt+0128, and Windows looks in Windows-1252, where 128 is €. Ç itself has a zero-style code too, Alt+0199. On a laptop with no numeric keypad neither code works, so use AltGr+E, which gives € on German, French, Spanish and Italian keyboards.

@workani&@alexluthor
Privacy & legal

Privacy

No accounts, no ads, no tracking cookies, and no cross-site tracking. The only analytics we keep are faceless — anonymous, aggregated counts of pages and searches, never tied to you. We store no IP addresses, set no tracking cookies, and build no profiles. Cloudflare hosts the site and handles requests for delivery and security.

Full privacy policy·Extension privacy·legal@asciify.dev

Attributions & licenses

Twemoji
© Twitter, Inc and other contributors · CC-BY 4.0
Noto Color Emoji
© Google · Apache 2.0
Fluent UI Emoji
© Microsoft · MIT
OpenMoji
© HfG Schwäbisch Gmünd · CC-BY-SA 4.0
Toss Face
© Viva Republica (Toss) · SIL OFL 1.1
JoyPixels
© JoyPixels Inc. · Free Limited Use License
SerenityOS Emoji
© The SerenityOS Developers · BSD-2-Clause
EmojiTwo
© EmojiTwo contributors · CC-BY 4.0
Apple Color Emoji
© Apple, Inc.
Facebook Emoji
© Meta Platforms, Inc.

Apple and Facebook emoji styles are proprietary and shown here solely for reference and comparison — a common-sense application of nominative-use / fair-use principles. asciify is not affiliated with, endorsed by, or sponsored by Apple, Inc., Meta Platforms, Inc., or any other rights holder listed above. If a rights holder requests removal of their emoji style from this site, it will be removed.

All other vendor emoji are reproduced for reference and comparison under their respective open licenses listed above.

Character names and code points from the Unicode® Standard. Unicode® and the Unicode Logo are registered trademarks of Unicode, Inc.

Privacy
© asciify.dev 2025-2026