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.