Back to Character Encoding

Windows-1254 Windows-1254 (CP-1254, Turkish) Windows Code Pages

The Windows-native Turkish code page — the practical counterpart to ISO-8859-9, including the same dotted/dotless I distinction.

What it is

Windows-1254 is Microsoft's Turkish code page, the Windows-native counterpart to ISO-8859-9, following the standard Windows-125x pattern. Like ISO-8859-9, it includes Turkish's dotted (İ/i) and dotless (I/ı) letter distinction — and the same "Turkish I problem" case-conversion caveat applies regardless of which of the two encodings is in use, since that's a locale-handling issue rather than an encoding-specific one.

Byte structure

Byte range Content
0x00–0x7F Identical to ASCII
0x80–0x9F Printable characters (curly quotes, dashes, €)
0xA0–0xFF Largely shared with ISO-8859-9's Turkish-adapted Latin-1 layout

Why your text is garbled (symptom → cause)

Symptom Likely cause
Turkish İ/ı/Ş/ş/Ğ/ğ characters wrong Windows-1254 vs. ISO-8859-9 or Latin-1 confusion
Uppercase/lowercase conversion breaks Turkish text The "Turkish I problem" — a locale-aware case-conversion issue, not an encoding bug, applies here identically to ISO-8859-9

Compatibility & gotchas

  • The Windows-native counterpart to ISO-8859-9, more commonly deployed on Windows systems for Turkish text.
  • Same Turkish I case-conversion caveat as ISO-8859-9 — use locale-aware case folding, not default ASCII rules, for Turkish text regardless of the underlying encoding.

Fixing it

  • Command-line conversion: iconv -f WINDOWS-1254 -t UTF-8 input.txt -o output.txt

Comparison

Encoding Key difference from Windows-1254
ISO-8859-9 Same base Turkish-adapted letter coverage, differs in the 0x80–0x9F range
UTF-8 Full Unicode coverage, the modern default

FAQ

Does Windows-1254 also have the Turkish I problem?

Yes — the dotted/dotless I case-conversion issue is a locale-handling bug pattern, not something specific to one encoding. It affects Turkish text processing regardless of whether the underlying encoding is Windows-1254, ISO-8859-9, or UTF-8.

Fun fact

Windows-1254's near-total overlap with ISO-8859-9 (differing only in the 0x80–0x9F range, same as the Latin-1/Windows-1252 pair) means the two are functionally interchangeable for the vast majority of real Turkish text — the differences mainly surface with typographic punctuation like curly quotes and em dashes.