Uppercase E with acute accentDouble box top-left corner
ASCII 201 is É on Windows and ╔ in old DOS.
É (Capital E with Acute) is byte 201 in Windows-1252, Unicode U+00C9. French keeps the accent on capitals, as in ÉTAT or the name Élodie, and Hungarian and Icelandic words start with it too. Sorting is where it surprises developers. JavaScript's default array sort compares UTF-16 code units, and U+00C9 comes after Z, so ['Zoé', 'Élodie', 'Emma'].sort() puts Élodie last. Sort with Intl.Collator or localeCompare and it lands where a French reader expects it. Old DOS had É at 144. Its UTF-8 bytes C3 89 misread as É. The HTML entity is É.
╔ (Double Down and Right) is byte 201 in code page 437, the original IBM PC character set, and maps to Unicode U+2554. It opens an all-double frame at the top left, with ═ (205) running right and ║ (186) going down. A frame that looks perfect in one terminal can fall apart in another because of width. Unicode classes box drawing as East Asian ambiguous width, so a terminal set up for Chinese, Japanese or Korean may draw ╔ and ═ two columns wide and push the right edge out of line. Check the terminal's setting for ambiguous-width characters. In UTF-8 it's E2 95 94, and the HTML entity is ╔.
#include <stdio.h>int main(void) {/* On Windows (code page 1252) byte 201 is É.Modern terminals expect UTF-8, so print the code point, not the byte. */printf("\u00C9\n"); /* UTF-8: C3 89 */unsigned char b = 201; /* the raw Windows-1252 byte */printf("%d 0x%02X\n", b, b); /* 201 0xC9 */return 0;}
#include <stdio.h>int main(void) {/* Byte 201 is ╔ only on a console using code page 437(chcp 437 on Windows, or DOSBox). On a UTF-8 terminal thelone byte 0xC9 is invalid and prints as garbage, often �. */putchar(201);/* char is signed on x86, so a plain char holding 0xC9 is -55.Use unsigned char when you compare or index by byte value. */char c = (char)201;unsigned char u = 201;printf("\n%d %d\n", c, u); /* -55 201 *//* Portable: print the Unicode character as UTF-8 instead. */printf("\u2554\n"); /* E2 95 94 */return 0;}
Before Java 18 the default charset on Western Windows was Windows-1252, so new String(bytes) or a FileReader without a charset reads UTF-8 input wrong. Pass the charset explicitly with `new String(bytes, StandardCharsets.UTF_8)`, or use Files.readString, which assumes UTF-8. Java 18 and later default to UTF-8, which hides the bug until the code runs on an older JVM.
When it means the state as a political body: l'État, le chef de l'État, les États membres. When it means a condition, it stays lowercase, as in en bon état or état d'esprit. The capital is a matter of meaning rather than position, so it keeps its É in the middle of a sentence too.
Put a zero in front: Alt+0201 reads Windows-1252 and gives É. Without it, Windows uses the DOS table, where 201 is the corner ╔. The DOS table has É as well, at 144, in both the US and Western European sets, so Alt+144 works on either kind of PC.
The screen was saved in code page 437 and is being read as Windows-1252, which has É on byte 201, where DOS had the corner ╔. The rest of the frame follows, so ╔═══╗ reads ÉÍÍÍ». Decode the bytes instead of patching letters: in Perl, `open my $f, '<:encoding(cp437)', 'menu.txt'` reads the frame back intact.
Windows-1252 stores É as byte 201, and a console on code page 437 or 850 draws 201 as the double-line corner ╔. The program's text is correct, only the console reads it with the wrong table. In C or C++, calling `SetConsoleOutputCP(1252);` at startup makes the console read those bytes the way they were written.
Put a zero in front: Alt+0201 reads Windows-1252 and gives É. Without it, Windows uses the DOS table, where 201 is the corner ╔. The DOS table has É as well, at 144, in both the US and Western European sets, so Alt+144 works on either kind of PC.
The screen was saved in code page 437 and is being read as Windows-1252, which has É on byte 201, where DOS had the corner ╔. The rest of the frame follows, so ╔═══╗ reads ÉÍÍÍ». Decode the bytes instead of patching letters: in Perl, `open my $f, '<:encoding(cp437)', 'menu.txt'` reads the frame back intact.
Windows-1252 stores É as byte 201, and a console on code page 437 or 850 draws 201 as the double-line corner ╔. The program's text is correct, only the console reads it with the wrong table. In C or C++, calling `SetConsoleOutputCP(1252);` at startup makes the console read those bytes the way they were written.