Single left angle quoteLowercase i with umlaut
ASCII 139 is ‹ on Windows and ï in old DOS.
‹ (Single Left Angle Quote) is byte 139 in Windows-1252, Unicode U+2039. It's the single form of the guillemet «, and Swiss typography uses it for a quote inside a quote: «Er sagte ‹nein›». German print turns the pair around so they point inward, ›so‹. On the web you'll also find it as a pagination arrow, as in ‹ Prev. A screen reader treats it as punctuation there, so give the link a text label or an aria-label. It isn't a less-than sign either: ‹ in place of < won't open an HTML tag or compare anything. Its partner › is byte 155. In UTF-8 it's E2 80 B9, garbled as ‹. The HTML entity is ‹.
ï (Small I with Diaeresis) is byte 139 in code page 437, the original IBM PC character set, and maps to Unicode U+00EF. Windows-1252 has the single left angle quote ‹ at 139, so DOS text read as Windows-1252 turns naïve into na‹ve. Code page 850 kept ï at 139 too.
#include <stdio.h>int main(void) {/* On Windows (code page 1252) byte 139 is ‹.Modern terminals expect UTF-8, so print the code point, not the byte. */printf("\u2039\n"); /* UTF-8: E2 80 B9 */unsigned char b = 139; /* the raw Windows-1252 byte */printf("%d 0x%02X\n", b, b); /* 139 0x8B */return 0;}
#include <stdio.h>int main(void) {/* Byte 139 is ï only on a console using code page 437(chcp 437 on Windows, or DOSBox). On a UTF-8 terminal thelone byte 0x8B is invalid and prints as garbage, often �. */putchar(139);/* char is signed on x86, so a plain char holding 0x8B is -117.Use unsigned char when you compare or index by byte value. */char c = (char)139;unsigned char u = 139;printf("\n%d %d\n", c, u); /* -117 139 *//* Portable: print the Unicode character as UTF-8 instead. */printf("\u00EF\n"); /* C3 AF */return 0;}
ï is also ASCII 239 on Windows, which has the full guide.
Byte 139 is ï in code page 437 and ‹ in Windows-1252, so a DOS file decoded as Windows turns naïf into na‹f and maïs into ma‹s. Since ‹ passes for punctuation, the damage is easy to overlook. In Ruby, `File.read('old.txt', encoding: 'IBM437:UTF-8')` reads the file and converts it in one step.
Byte 139 is ï in code page 437 and ‹ in Windows-1252, so a DOS file decoded as Windows turns naïf into na‹f and maïs into ma‹s. Since ‹ passes for punctuation, the damage is easy to overlook. In Ruby, `File.read('old.txt', encoding: 'IBM437:UTF-8')` reads the file and converts it in one step.