ISO-8859-2, also called Latin-2, is the single-byte character set for Central
and Eastern European languages written in the Latin alphabet. It keeps ASCII in
the lower half and packs letters like ą, č, ő, ž, and ł into the upper
half. This tool shows the exact Latin-2 byte for each character of your text.
How it works
The mapping is a fixed 256-entry table. Bytes 0x00–0x7F are identical to
ASCII, so plain English text encodes the same way it would in any
ASCII-compatible charset. Bytes 0xA0–0xFF are where Latin-2 differs: each
holds a specific Central European letter or symbol.
To guarantee the table is exactly the official one, the tool builds it in your
browser by decoding every byte 0x00–0xFF with the platform’s native
ISO-8859-2 decoder, then inverts that map for encoding. Each input character is
looked up; if it has a Latin-2 byte it is shown in hex, and if not it is flagged
as unmapped.
Which languages Latin-2 covers
Latin-2 was designed specifically for Central and Eastern European languages that use a Latin-based alphabet. The languages it supports include:
- Polish — letters like ą, ć, ę, ł, ń, ó, ś, ź, ż
- Czech and Slovak — letters like č, ď, ě, ň, ř, š, ť, ů, ž
- Hungarian — letters like á, é, í, ó, ö, ő, ú, ü, ű
- Croatian and Slovenian — letters like č, đ, š, ž
- Romanian — letters like ă, â, î, ș, ț (though Romanian has two encoding variants)
It does not cover Cyrillic-script languages (Russian, Bulgarian, Serbian), which use ISO-8859-5, or Western European languages (French, German, Spanish, Portuguese), which use ISO-8859-1 (Latin-1).
How Latin-2 differs from Latin-1
The two encodings are identical in the lower half (0x00–0x7F, which is ASCII). The difference is entirely in the 0x80–0xFF range. Latin-1 uses that space for Western European symbols and accented characters like é, ä, ñ, and the pound sign. Latin-2 reassigns much of the same byte range to Central European letters instead — so the same byte value represents a completely different character depending on which encoding you declare. This is the core reason encoding declarations in HTML and HTTP headers are essential.
Practical encoding table sample
| Character | Language | ISO-8859-2 byte |
|---|---|---|
| ą | Polish | 0xB1 |
| ę | Polish | 0xEA |
| ł | Polish | 0xB3 |
| č | Czech | 0xE8 |
| ő | Hungarian | 0x51 (0x91 + offsets vary) |
| ž | Croatian | 0xBE |
Note: exact byte values should be verified with the encoder for your specific character — the table above is illustrative.
Example and notes
- The Polish pangram
"Pchnąć w tę łódź jeża"encodes withąas0xB1,łas0xB3— each a single byte. - Latin-2 has no euro sign, no Cyrillic, and no CJK; those will appear as unmapped. For full coverage of any script, use UTF-8 instead.
- The same upper-half byte means different things across the ISO-8859 family, so always declare the charset explicitly when storing or transmitting Latin-2 text.