Pound signLowercase u with acute accent
ASCII 163 is £ on Windows and ú in old DOS.
£ (Pound Sign) is byte 163 in Windows-1252, Unicode U+00A3. It's the symbol for the British pound, and Egypt writes its own pound as E£. Where it goes depends on the reader's locale, not on the currency. JavaScript's Intl.NumberFormat with currency GBP gives £1,234.56 for en-GB, 1.234,56 £ for de-DE and 1 234,56 £GB for fr-FR, so don't hard-code a £ prefix on a site that shows prices to other countries. Old DOS had the pound sign too, at 156. In UTF-8 it's C2 A3, and the HTML entity is £.
ú (Small U with Acute) is byte 163 in code page 437, the original IBM PC character set, and maps to Unicode U+00FA. Windows-1252 has the pound sign £ at 163, so the two trade places across the tables: Spanish DOS text read as Windows-1252 turns música into m£sica, and a £ printed to a code page 437 console shows up as ú. Code page 850 kept ú at 163 too.
#include <stdio.h>int main(void) {/* On Windows (code page 1252) byte 163 is £.Modern terminals expect UTF-8, so print the code point, not the byte. */printf("\u00A3\n"); /* UTF-8: C2 A3 */unsigned char b = 163; /* the raw Windows-1252 byte */printf("%d 0x%02X\n", b, b); /* 163 0xA3 */return 0;}
#include <stdio.h>int main(void) {/* Byte 163 is ú only on a console using code page 437(chcp 437 on Windows, or DOSBox). On a UTF-8 terminal thelone byte 0xA3 is invalid and prints as garbage, often �. */putchar(163);/* char is signed on x86, so a plain char holding 0xA3 is -93.Use unsigned char when you compare or index by byte value. */char c = (char)163;unsigned char u = 163;printf("\n%d %d\n", c, u); /* -93 163 *//* Portable: print the Unicode character as UTF-8 instead. */printf("\u00FA\n"); /* C3 BA */return 0;}
ú is also ASCII 250 on Windows, which has the full guide.
The server sent a text response without a charset in its Content-Type header, so requests fell back to ISO-8859-1 and decoded the UTF-8 bytes of £, C2 A3, as  and £. Set the encoding yourself before reading: `r.encoding = 'utf-8'`, then use r.text as usual. Better still, have the server send charset=utf-8 so every client gets it right.
The British 7-bit variant of ASCII put £ at 0x23, the byte where US ASCII has #, so a printer or terminal set to the UK character set printed £ where Americans expected #. The name overlaps too: in American English pound sign also means #, which makes the phrase ambiguous in search.
The program writes Windows-1252, where £ is byte 163, and the console reads code page 437 or 850, where 163 is ú, so £25 shows up as ú25. In Java, switch both sides to UTF-8: run `chcp 65001`, then wrap the output with `new PrintStream(System.out, true, "UTF-8")` before printing prices.
DOS keeps ú at byte 163, where Windows-1252 has the pound sign, so música turns into m£sica and tú into t£. A £ inside a Spanish word can't be anything else, which makes this mix-up easy to confirm. Decode the file as code page 850. Any real pound signs in it are stored at byte 156 and come back correctly too.
The program writes Windows-1252, where £ is byte 163, and the console reads code page 437 or 850, where 163 is ú, so £25 shows up as ú25. In Java, switch both sides to UTF-8: run `chcp 65001`, then wrap the output with `new PrintStream(System.out, true, "UTF-8")` before printing prices.
DOS keeps ú at byte 163, where Windows-1252 has the pound sign, so música turns into m£sica and tú into t£. A £ inside a Spanish word can't be anything else, which makes this mix-up easy to confirm. Decode the file as code page 850. Any real pound signs in it are stored at byte 156 and come back correctly too.