ISO-8859-15 ISO-8859-15 (Latin-9) ISO-8859
Latin-1 with the euro sign added and a few rarely-used symbols swapped out — the 'fixed' version of Latin-1 for the post-1999 European currency era.
What it is
ISO-8859-15, or Latin-9, exists to solve one specific, well-known gap in ISO-8859-1: the euro sign (€), introduced as a currency in 1999, after Latin-1 had already been finalized. Rather than adding new byte positions (single-byte encodings have no room to add characters without removing others), Latin-9 swaps out eight rarely-used Latin-1 characters — mostly obscure typographic symbols and a few French/Finnish letters that saw limited practical use — for €, along with those French/Finnish letters in more commonly needed forms.
Byte structure
| Byte range | Content |
|---|---|
| 0x00–0x7F | Identical to ASCII |
| 0xA0–0xFF | Identical to ISO-8859-1 except for eight positions, most notably 0xA4 which becomes € instead of the generic currency sign ¤ |
Why your text is garbled (symptom → cause)
| Symptom | Likely cause |
|---|---|
| € symbol displays as ¤ (generic currency sign) or something else entirely | Text is Latin-9 but read as Latin-1 — position 0xA4 means different things in each |
| Otherwise-correct Latin-1 text has a few unexpected symbol substitutions | The eight swapped positions between Latin-1 and Latin-9 causing subtle differences in rarely-used typographic characters |
Compatibility & gotchas
- Very close to Latin-1 — only eight positions differ, making mislabeling between the two an easy, often low-visibility mistake, similar to the Latin-1/Windows-1252 confusion pattern.
- Windows-1252 already included the euro sign by the time Latin-9 was finalized (in its 0x80–0x9F extension range), which meant Latin-9 arrived somewhat late relative to the practical problem it solved — much real-world Western European text had already moved to either Windows-1252 or UTF-8 by the time Latin-9 saw meaningful adoption.
- Rarely the deciding factor in modern mojibake debugging — if you're troubleshooting Western European text issues today, Latin-1, Windows-1252, and UTF-8 confusion is far more common in practice than Latin-9-specific issues.
Fixing it
- Command-line conversion:
iconv -f ISO-8859-15 -t UTF-8 input.txt -o output.txt
Comparison
| Encoding | Key difference from ISO-8859-15 |
|---|---|
| ISO-8859-1 | Lacks the euro sign and the other seven swapped characters |
| Windows-1252 | Also includes the euro sign, but via its 0x80–0x9F extension range rather than swapping existing Latin-1 positions |
| UTF-8 | Full Unicode coverage, the modern default |
FAQ
Why does ISO-8859-15 exist if ISO-8859-1 already covers Western Europe?
Latin-1 predates the euro currency (introduced 1999) and has no euro sign. Latin-9 was created specifically to add it, along with a few other minor character swaps, without requiring a completely new encoding scheme.
Is ISO-8859-15 the same as Windows-1252?
No, though both include the euro sign — they add it differently. Windows-1252 uses its 0x80–0x9F extension range (which Latin-1 leaves unassigned); Latin-9 replaces eight existing Latin-1 character positions instead.
Fun fact
The euro sign's introduction in 1999 arrived at an awkward moment for single-byte European encodings — too late for the already-established Latin-1, but early enough that multiple different (and mutually incompatible) fixes emerged in parallel: Windows-1252's extension-range approach and Latin-9's position-swapping approach both solved the same problem differently, adding yet another layer of encoding confusion to an already crowded field.