Base64 zet groepen van drie bytes om in vier tekens. Het teken = vult de laatste groep aan als er bytes ontbreken. Het is padding en stelt geen letter uit de oorspronkelijke tekst voor.
Tel bytes, geen letters
Eén resterende byte vraagt om ==, twee om = en drie om geen padding. f wordt Zg==, fo wordt Zm8= en foo wordt Zm9v. Tel UTF-8-bytes: een letter met accent of een emoji kan meerdere bytes gebruiken.
Ontbrekende padding herstellen
Na het verwijderen van witruimte kan een lengte modulo 4 van 2 worden aangevuld met ==, en een rest van 3 met =. Een rest van 1 is onmogelijk voor volledige Base64-data; extra = lossen dat niet op. Controleer ook alfabet en protocol.
Omissie is niet hetzelfde als foutieve padding
Decodex accepteert Zg en Zg==, maar weigert Zg= vanwege onvolledige aanwezige padding. Ook A=AA en Zg=== worden geweigerd. Verwijder geen willekeurige tekens om beschadigde gegevens te verbergen. Sommige protocollen vereisen exacte padding, andere laten deze weg.
Probeer dit voorbeeld
| Tekst | UTF-8 bytes | Base64 | Padding |
|---|---|---|---|
f | 1 | Zg== | == |
fo | 2 | Zm8= | = |
foo | 3 | Zm9v | — |
Veelgestelde vragen
Is een reeks zonder = altijd fout?
Nee. Bij een byteaantal dat deelbaar is door drie is padding niet nodig. Sommige protocollen laten padding ook bewust weg.
Bronnen
Meer Base64-handleidingen
Base64 en Base64URL: verschillen en voorbeelden
Vergelijk Base64 en Base64URL, de tekens + / en - _, padding en problemen met URL-parameters aan de hand van UTF-8-voorbeelden.
Base64 in JavaScript: Unicode en btoa-fouten
Codeer en decodeer Unicode met TextEncoder, btoa, atob en TextDecoder zonder accenten of emoji te verliezen.
