Anleitung
- Geben Sie den zu kodierenden Text ein oder fügen Sie ihn ein. Stellen Sie die Eingabe auf Hex um, um Rohbytes zu kodieren, oder klicken Sie auf „Datei öffnen“, um eine Datei zu kodieren.
- Belassen Sie die „Zeichenkodierung“ auf UTF-8, sofern das empfangende System keinen anderen Zeichensatz erwartet.
- Legen Sie die Optionen fest: Behalten Sie für die meisten Zwecke die Variante „Standard (RFC 4648)“ bei, schalten Sie die „Auffüllung“ aus, wenn der Empfänger sie nicht möchte, und setzen Sie bei Bedarf einen „Zeilenumbruch“ nach 76 (MIME) oder 64 (PEM) Zeichen.
- Kopieren Sie die Base64-Ausgabe oder laden Sie sie als Datei herunter.
So funktioniert die Base64-Kodierung
Der Encoder liest die Eingabe in Blöcken von drei Bytes. Diese 24 Bit werden in vier Gruppen zu je 6 Bit aufgeteilt, und jeder 6-Bit-Wert (0 bis 63) wählt ein Zeichen aus: A-Z für 0 bis 25, a-z für 26 bis 51, 0-9 für 52 bis 61, danach + und /. Aus drei Bytes werden vier Zeichen, deshalb ist Base64 rund 33 % größer als die Originaldaten.
Text M a n
Bytes 77 97 110
Bits 01001101 01100001 01101110
6-bit 010011 010110 000101 101110
Index 19 22 5 46
Base64 T W F u
Auffüllung und Ausgabelänge
Ist die Eingabelänge kein Vielfaches von drei, bleibt die letzte Gruppe unvollständig. Ein übrig gebliebenes Byte ergibt zwei Zeichen, gefolgt von ==; zwei übrig gebliebene Bytes ergeben drei Zeichen und ein =. Eine aufgefüllte Ausgabe ist daher bei n Eingabebytes immer 4 × ceil(n / 3) Zeichen lang.
Die Auffüllung enthält keine Daten. JSON Web Tokens, URL-Parameter und viele APIs verzichten darauf. Schalten Sie die Auffüllung also aus, wenn die Gegenseite eine Ausgabe ohne Füllzeichen erwartet. Für Links und Dateinamen wählen Sie die URL-sichere Variante oder verwenden die Seite Base64URL; beide ersetzen + und / durch - und _.
Zeilenumbruch für MIME und PEM
Standardmäßig besteht die Ausgabe aus einer einzigen langen Zeile, wie sie JSON, Data-URIs und HTTP-Header benötigen. Zwei Formate erwarten Zeilenumbrüche:
- MIME, 76 Zeichen. In E-Mail-Anhängen, die mit
Content-Transfer-Encoding: base64versendet werden, dürfen Zeilen nicht länger als 76 Zeichen sein (RFC 2045). Diese Option beendet Zeilen mit CRLF, wie es MIME vorschreibt. - PEM, 64 Zeichen. Zertifikate und Schlüssel zwischen den Zeilen
-----BEGINund-----ENDverwenden Zeilen mit 64 Zeichen (RFC 7468). Diese Option verwendet LF als Zeilenende.
Zeichensätze und Dateien
Base64 kodiert Bytes, keine Buchstaben. Text wird daher zunächst mithilfe eines Zeichensatzes in Bytes umgewandelt. Der Buchstabe é belegt in UTF-8 zwei Bytes, in ISO-8859-1 oder Windows-1252 dagegen nur eines, sodass derselbe Text unterschiedliches Base64 ergibt. UTF-8 ist die richtige Wahl für das Web, JSON und nahezu jede moderne API. Wählen Sie GBK, Shift_JIS, Windows-1251 oder einen anderen Zeichensatz nur, um ein Altsystem zu bedienen.
Dateien werden genau so kodiert, wie sie gespeichert sind, ohne Zeichensatzumwandlung. Für Bilder mit fertigen HTML- und CSS-Snippets nutzen Sie Bild zu Base64; für eine Data-URI mit erkanntem MIME-Typ verwenden Sie Datei zu Base64.
Spezifikation
| Alphabet | A-Z a-z 0-9 + / |
|---|---|
| Ausgabegröße | 4 Zeichen pro 3 Bytes (etwa 133 %) |
| Auffüllung | Mit = auf ein Vielfaches von 4 Zeichen |
| Standard | RFC 4648, Abschnitt 4 |
| Groß-/Kleinschreibung relevant | Ja |
Beispiele
| Eingabe (UTF-8) | Ausgabe |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ== |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Häufig gestellte Fragen
Warum unterscheidet sich meine Base64-Ausgabe von der eines anderen Encoders?
echo fügt einen hinzu; verwenden Sie printf '%s' oder echo -n), ein anderer Zeichensatz, Windows-Zeilenenden im Text oder abweichende Einstellungen für Auffüllung, Alphabet oder Zeilenumbruch. Dieselben Bytes mit denselben Optionen ergeben immer dieselbe Ausgabe.Wie kodiere ich Unicode-Text in JavaScript als Base64?
btoa() akzeptiert nur Zeichen bis U+00FF und löst bei allen anderen einen Fehler aus. Wandeln Sie den String zuerst in UTF-8-Bytes um, zum Beispiel mit btoa(String.fromCharCode(...new TextEncoder().encode(str))). In Node.js verwenden Sie Buffer.from(str, 'utf8').toString('base64').Wie kodiere ich auf der Kommandozeile in Base64?
printf '%s' 'your text' | base64 aus. GNU base64 bricht die Ausgabe standardmäßig nach 76 Zeichen um (mit -w 0 erhalten Sie eine einzige Zeile), openssl base64 nach 64 Zeichen (fügen Sie -A hinzu).Ist die Base64-Kodierung eine Form der Verschlüsselung?
Um wie viel vergrößert Base64 meine Daten?
Aus je 3 Bytes werden 4 Zeichen, aufgerundet auf eine volle Gruppe, die Ausgabe ist also rund 33 % größer. Ein MIME-Zeilenumbruch fügt pro 76 Zeichen zwei weitere Bytes (CRLF) hinzu.