Datei hochladen
  1. base64hub
  2. Text-Tools
  3. Base64 in UTF-16

Base64 in UTF-16: UTF-16LE- und BE-Text dekodieren

Fügen Sie Base64 mit UTF-16-Text ein und lesen Sie ihn als normale Zeichenkette. Die Seite startet mit UTF-16LE, dem Standard unter Windows und .NET; erscheinen in der Ausgabe CJK-Zeichen, wechseln Sie zu UTF-16BE.

Kostenlos ohne Anmeldung, ohne Limits Lokal kein Upload Aktualisiert 27.10.2026
Eingabe 0 BAusgabe 0 BGröße –

Wird in Ihrem Browser verarbeitet. Diese Seite kann Ihre Daten nirgendwohin senden – woher wir das wissen

So dekodieren Sie Base64 in UTF-16

  1. Fügen Sie das Base64 in Eingabe · Base64 ein. Der Zeichensatz steht bereits auf UTF-16LE.
  2. Lesen Sie den Text in Ausgabe · Text. Das Feld Sieht aus wie zeigt meist Binärdaten an, weil die Erkennung Nullbytes als Zeichen für Binärdaten wertet; die Textausgabe stimmt trotzdem.
  3. Besteht das Ergebnis aus einer Reihe CJK-artiger Zeichen, stellen Sie den Zeichensatz auf UTF-16BE.
  4. Beginnen die Daten mit einer Byte-Order-Mark, wählt Automatisch die richtige Byte-Reihenfolge und entfernt die Markierung.
  5. Ausgabe kopieren kopiert den Text; Herunterladen speichert die rohen Bytes.

Für die Gegenrichtung gibt es UTF-16 in Base64.

UTF-16 in Base64 erkennen

UTF-16-Base64 hat einen sichtbaren Rhythmus. ASCII-Text in UTF-16 wechselt zwischen Buchstabenbytes und Nullbytes, und Nullbits werden im Base64-Alphabet zu A, deshalb taucht alle paar Zeichen ein A auf:

Base64Byte-ReihenfolgeDekodiert
SABlAGwAbABvAA==LE, ohne BOMHello
AEgAZQBsAGwAbw==BE, ohne BOMHello
//5IAGkALE mit BOM FF FEHi
/v8ASABpBE mit BOM FE FFHi
RwBlAHQALQBEAGEAdABlAA==LE, ohne BOMGet-Date

Big-Endian-ASCII-Text beginnt immer mit A, weil sein erstes Byte null ist. Eine Zeichenkette, die mit //4 oder /v8 anfängt, beginnt mit einer Byte-Order-Mark.

Byte-Reihenfolge, BOM und Automatisch

Mit der falschen Byte-Reihenfolge gelesen, wird jedes Bytepaar vertauscht, und aus englischem Text werden CJK-Ideogramme: AEgAZQBsAGwAbw== als UTF-16LE dekodiert ergibt 䠀攀氀氀漀. Dabei geht nichts verloren; ein Wechsel des Zeichensatzes behebt es.

Automatisch erkennt UTF-16 zuverlässig, wenn die Daten mit einer BOM beginnen. Ohne BOM ist reiner ASCII-Text in UTF-16 zugleich gültiges UTF-8 (Nullbytes sind dort erlaubt), daher kann die automatische Erkennung ihn für UTF-8 mit unsichtbaren Zeichen halten. Lassen Sie auf dieser Seite UTF-16LE oder UTF-16BE von Hand ausgewählt, solange Sie am Anfang kein //4 oder /v8 sehen.

Eine ungerade Anzahl Bytes bedeutet, dass etwas nicht stimmt. SABpAAA= enthält 5 Bytes; als UTF-16LE dekodiert ergibt das Hi und ein angehängtes �. Entweder wurde der Wert abgeschnitten, oder er ist gar kein UTF-16.

Woher UTF-16-Base64 stammt

Die häufigste Quelle ist PowerShell. Kodierte Befehle wie powershell -enc SQBFAFgA... tauchen in geplanten Tasks, Installationsskripten und Sicherheitslogs auf, und das Base64 ist immer UTF-16LE. Der PowerShell-EncodedCommand-Decoder holt den Wert aus einer vollständigen Befehlszeile und sucht im Skript nach weiterem Base64.

Weitere Quellen sind .NET-Programme, die Convert.ToBase64String(Encoding.Unicode.GetBytes(...)) aufrufen, Daten aus der Windows-Registry und dem Ereignisprotokoll sowie SQL-Server-Werte vom Typ NVARCHAR, die als Binärdaten exportiert wurden.

UTF-16-Base64 im Code dekodieren

import base64

raw = base64.b64decode("SABlAGwAbABvAA==")
raw.decode("utf-16-le")                           # 'Hello'
base64.b64decode("/v8ASABp").decode("utf-16")     # 'Hi', byte order taken from the BOM

Bei einer ungeraden Byteanzahl wirft Python UnicodeDecodeError: truncated data.

// Node.js: little-endian only
Buffer.from("SABlAGwAbABvAA==", "base64").toString("utf16le");   // "Hello"
// Browsers and Node.js: either order
new TextDecoder("utf-16be").decode(Uint8Array.from(atob("AEgAZQBsAGwAbw=="), c => c.charCodeAt(0)));   // "Hello"

In C# liest Encoding.Unicode.GetString(Convert.FromBase64String(s)) UTF-16LE, Encoding.BigEndianUnicode liest Big-Endian. Siehe auch Python und Node.js.

Häufige Fragen

Woran erkenne ich, dass Base64 UTF-16 enthält?

Achten Sie auf viele A in einem regelmäßigen Muster, wie in SABlAGwAbABvAA==: Jeder ASCII-Buchstabe steht in UTF-16 neben einem Nullbyte. Ein //4 oder /v8 am Anfang ist eine UTF-16-Byte-Order-Mark.

Warum sehe ich nach dem Dekodieren chinesische Zeichen?

Die Byte-Reihenfolge ist vertauscht. Big-Endian-Hello, als Little-Endian gelesen, wird zu 䠀攀氀氀漀. Stellen Sie den Zeichensatz zwischen UTF-16LE und UTF-16BE um.

Warum steht am Ende des Textes ein �?

UTF-16 braucht eine gerade Anzahl Bytes. Eine ungerade Anzahl bedeutet, dass das Base64 abgeschnitten wurde oder kein UTF-16 ist, und das übrige Byte wird zum Ersatzzeichen.

Wie dekodiere ich ein PowerShell-EncodedCommand?

Der Wert nach -EncodedCommand (oder -enc) ist UTF-16LE-Base64, diese Seite dekodiert ihn also. Der PowerShell-Decoder nimmt außerdem die ganze Befehlszeile an und findet verschachtelte Payloads.