Lowercase s with caronUppercase U with umlaut
ASCII 154 is š on Windows and Ü in old DOS.
š (Small S with Caron) is byte 154 in Windows-1252, Unicode U+0161. It's the sh sound in šest, six in Czech and Croatian, and Finnish borrows it for loanwords such as šakki. If Central European text shows ¹ where š belongs, check for ISO-8859-2 (Latin-2) being read as Windows-1252. Latin-2 stores š at 0xB9, not at Windows-1250's 0x9A, and B9 in Windows-1252 is the superscript one. So the right fix there is ISO-8859-2, not Windows-1250. Garbled UTF-8 shows it as Å¡, from its bytes C5 A1. The capital Š is byte 138. The HTML entity is š.
Ü (Capital U with Umlaut) is byte 154 in code page 437, the original IBM PC character set, and maps to Unicode U+00DC. Windows-1252 has small š at 154, so German DOS text read as Windows-1252 turns Übersicht into šbersicht, a capital turned into a small Czech letter. Code page 850 kept Ü at 154 too. Small ü is 129 in DOS.
#include <stdio.h>int main(void) {/* On Windows (code page 1252) byte 154 is š.Modern terminals expect UTF-8, so print the code point, not the byte. */printf("\u0161\n"); /* UTF-8: C5 A1 */unsigned char b = 154; /* the raw Windows-1252 byte */printf("%d 0x%02X\n", b, b); /* 154 0x9A */return 0;}
#include <stdio.h>int main(void) {/* Byte 154 is Ü only on a console using code page 437(chcp 437 on Windows, or DOSBox). On a UTF-8 terminal thelone byte 0x9A is invalid and prints as garbage, often �. */putchar(154);/* char is signed on x86, so a plain char holding 0x9A is -102.Use unsigned char when you compare or index by byte value. */char c = (char)154;unsigned char u = 154;printf("\n%d %d\n", c, u); /* -102 154 *//* Portable: print the Unicode character as UTF-8 instead. */printf("\u00DC\n"); /* C3 9C */return 0;}
Ü is also ASCII 220 on Windows, which has the full guide.
They stand for the same sh sound but are different letters. Czech, Slovak, Croatian and Slovenian write š with a caron, Turkish writes ş with a cedilla, and Romanian writes ș with a comma below. Keep each name in its own letter. Windows-1252 only has š, so Turkish text needs Windows-1254 or UTF-8, and Romanian ș needs UTF-8.
The š is a capital Ü. DOS code pages keep Ü at byte 154, where Windows-1252 has š, so a DOS export turns Übersicht into šbersicht. Only the capital does this. Lowercase ü sits at 129, which Windows-1252 leaves empty, so it simply drops out. Perl converts the file: `perl -MEncode -pe '$_ = encode("UTF-8", decode("cp850", $_))' old.txt > new.txt`.
The š is a capital Ü. DOS code pages keep Ü at byte 154, where Windows-1252 has š, so a DOS export turns Übersicht into šbersicht. Only the capital does this. Lowercase ü sits at 129, which Windows-1252 leaves empty, so it simply drops out. Perl converts the file: `perl -MEncode -pe '$_ = encode("UTF-8", decode("cp850", $_))' old.txt > new.txt`.