Base64 encodes bytes, not letters. The same European word produces different Base64 depending on whether those bytes are UTF-8, ISO-8859-1, Windows-1252 or ISO-8859-2. This is the #1 reason developers in France, Germany, Spain, Poland and Nordics see garbled text after “successful” decoding.
Quick map for Europe
| Situation | Likely charset |
|---|---|
| Modern APIs, browsers, JSON, UTF-8 databases | UTF-8 |
| Old Windows apps, Word/Excel exports, Western Europe | Windows-1252 |
| Strict Latin-1 / ISO environments | ISO-8859-1 |
| Euro sign in legacy Western Europe | ISO-8859-15 or Windows-1252 |
| Polish, Czech, Slovak, Hungarian legacy data | ISO-8859-2 |
| Russian / Bulgarian legacy mail | Windows-1251 or KOI8-R |
Classic mojibake: é instead of é
That pattern means UTF-8 bytes were shown as Latin-1/Windows-1252. Decode the Base64 as UTF-8, or paste it into the character encoding detector to rank charsets automatically.
Developer workflow
- Prefer UTF-8 for new systems (Europe and worldwide).
- When decoding unknown legacy Base64, leave charset on auto-detect on the Base64 decoder.
- If you know the source OS (old Windows ERP, bank file, SAP export), force Windows-1252 or ISO-8859-2 explicitly on Base64 to text.
- When encoding for a legacy peer, set the matching charset on text to Base64 so they receive the bytes they expect.
Comments (0)
Questions, ideas or a bug in “Base64 and European character sets”? Leave a comment, rate the tool, or reply to others.
No comments yet. Be the first to share your feedback!