Uppercase O with umlautBox top-left corner, double vertical
ASCII 214 is Ö on Windows and ╓ in old DOS.
Ö (Capital O with Umlaut) is byte 214 in Windows-1252, Unicode U+00D6. German, Swedish, Finnish and Turkish all use it, and Hungarian has it next to a lookalike with two slanted strokes, Ő, as in ŐSZ (autumn). Windows-1252 has Ö but not Ő. Hungarian text saved in Windows-1250, where Ő is byte 0xD5, and then read as Windows-1252 shows Õ in its place, so ŐSZ becomes ÕSZ. Old DOS had Ö at 153. In UTF-8 it's C3 96, which misreads as Ö. The HTML entity is Ö.
╓ (Double Down, Single Right) is byte 214 in code page 437, the original IBM PC character set, and maps to Unicode U+2553. It's the top-left corner of a box with double sides and a single top edge: ─ (196) runs right toward ╖ (183) and ║ (186) drops down. Encoding detection won't help you identify files built from pieces like this. Every box byte from 179 to 218 is also a valid ISO-8859-1 character, so the Linux file command reports a code page 437 frame as ISO-8859 text. You have to know, or guess from the gibberish, that it's 437. Code page 850 put Í on this byte. In UTF-8 it's E2 95 93, and the HTML entity is ╓.
#include <stdio.h>int main(void) {/* On Windows (code page 1252) byte 214 is Ö.Modern terminals expect UTF-8, so print the code point, not the byte. */printf("\u00D6\n"); /* UTF-8: C3 96 */unsigned char b = 214; /* the raw Windows-1252 byte */printf("%d 0x%02X\n", b, b); /* 214 0xD6 */return 0;}
#include <stdio.h>int main(void) {/* Byte 214 is ╓ only on a console using code page 437(chcp 437 on Windows, or DOSBox). On a UTF-8 terminal thelone byte 0xD6 is invalid and prints as garbage, often �. */putchar(214);/* char is signed on x86, so a plain char holding 0xD6 is -42.Use unsigned char when you compare or index by byte value. */char c = (char)214;unsigned char u = 214;printf("\n%d %d\n", c, u); /* -42 214 *//* Portable: print the Unicode character as UTF-8 instead. */printf("\u2553\n"); /* E2 95 93 */return 0;}
Fix the connection charset, not the stored rows. If the table holds proper UTF-8 and only the output is wrong, tell the client connection it's UTF-8; in MySQL or MariaDB that's `SET NAMES utf8mb4` right after connecting. Don't try a find-and-replace on Ö first. The second character is an en dash, and any cleanup that normalizes dashes turns it into Ã-, which no decoder can turn back into Ö.
In German, yes. OE is the accepted fallback when you can't type Ö, as in a username or an email address. In Swedish, Finnish and Turkish it's wrong, because Ö is a letter of its own there and OE just reads as two vowels. Dropping the dots altogether is worse in every language: in German, schon means already while schön means beautiful.
No. They stand for a similar vowel, but they're separate characters. Swedish, Finnish and German write Ö, while Danish and Norwegian write Ø (U+00D8, byte 216). Plain string comparison treats them as unrelated, so a Norwegian name stored with Ö won't match a lookup typed with Ø. Keep whichever the language or the person uses, and only swap one for the other in a deliberate transliteration step.
The file is code page 437 being read as Windows-1252, where 214 is Ö. The rest of the frame follows the same swap: ╓──╖ comes out as ÖÄÄ·, the ║ sides turn into º, and the bottom edge ╙──╜ reads ÓÄĽ. Long runs of Ä are the giveaway. Decode it as 437 on purpose, for example `open(path, encoding='cp437')` in Python, and save a UTF-8 copy.
The file is code page 437 being read as Windows-1252, where 214 is Ö. The rest of the frame follows the same swap: ╓──╖ comes out as ÖÄÄ·, the ║ sides turn into º, and the bottom edge ╙──╜ reads ÓÄĽ. Long runs of Ä are the giveaway. Decode it as 437 on purpose, for example `open(path, encoding='cp437')` in Python, and save a UTF-8 copy.