Back to Character Encoding

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.