Subir un archivo
  1. base64hub
  2. Herramientas de texto
  3. Base64 a UTF-16

Base64 a UTF-16: decodifica texto UTF-16LE y BE

Pega Base64 que contiene texto UTF-16 y léelo como una cadena normal. La página arranca en UTF-16LE, el valor por defecto de Windows y .NET; cambia a UTF-16BE si la salida se convierte en caracteres CJK.

Gratis sin registro, sin límites Local no se sube nada Actualizado 27 oct 2026
Entrada 0 BSalida 0 BTamaño –

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo decodificar Base64 a UTF-16

  1. Pega el Base64 en Entrada · Base64. Juego de caracteres viene ajustado a UTF-16LE.
  2. Lee el texto en Salida · texto. El campo Parece suele indicar Binary, porque el detector toma los bytes cero como señal de datos binarios; aun así, la salida de texto es correcta.
  3. Si el resultado es una fila de caracteres con aspecto CJK, cambia Juego de caracteres a UTF-16BE.
  4. Si los datos empiezan con una marca de orden de bytes, Detección automática elige el orden correcto y descarta la marca.
  5. Copiar salida copia el texto; Descargar guarda los bytes sin procesar.

Para la dirección contraria, consulta UTF-16 a Base64.

Cómo reconocer UTF-16 en Base64

El Base64 de UTF-16 tiene un ritmo visible. El texto ASCII en UTF-16 alterna bytes de letra con bytes cero, y los bits a cero corresponden a A en el alfabeto Base64, así que aparece una A cada pocos caracteres:

Base64Orden de bytesDecodificado
SABlAGwAbABvAA==LE, sin BOMHello
AEgAZQBsAGwAbw==BE, sin BOMHello
//5IAGkALE con BOM FF FEHi
/v8ASABpBE con BOM FE FFHi
RwBlAHQALQBEAGEAdABlAA==LE, sin BOMGet-Date

El texto ASCII en big-endian siempre empieza por A, porque su primer byte es cero. Una cadena que empieza por //4 o /v8 comienza con una marca de orden de bytes.

Orden de bytes, BOM y detección automática

Si se lee con el orden de bytes equivocado, cada par de bytes queda intercambiado y el texto en inglés se convierte en ideogramas CJK: AEgAZQBsAGwAbw== decodificado como UTF-16LE da 䠀攀氀氀漀. No se pierde nada; basta con cambiar Juego de caracteres.

Detección automática maneja bien UTF-16 cuando los datos empiezan con un BOM. Sin BOM, el texto ASCII simple en UTF-16 también es UTF-8 válido (los bytes cero están permitidos ahí), así que la detección automática puede confundirlo con UTF-8 lleno de caracteres invisibles. En esta página, deja seleccionado UTF-16LE o UTF-16BE a mano, salvo que veas //4 o /v8 al principio.

Un número impar de bytes indica que algo falla. SABpAAA= contiene 5 bytes; decodificado como UTF-16LE da Hi seguido de un �. O el valor está cortado, o no es UTF-16 en absoluto.

De dónde sale el Base64 en UTF-16

La fuente más habitual es PowerShell. Los comandos codificados del tipo powershell -enc SQBFAFgA... aparecen en tareas programadas, scripts de instalación y registros de seguridad, y su Base64 siempre es UTF-16LE. El decodificador de EncodedCommand de PowerShell extrae el valor de una línea de comandos completa y busca más Base64 dentro del script.

Otras fuentes son los programas .NET que llaman a Convert.ToBase64String(Encoding.Unicode.GetBytes(...)), los datos del registro y de eventos de Windows, y los valores NVARCHAR de SQL Server exportados como binario.

Decodificar Base64 en UTF-16 desde código

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

Python lanza UnicodeDecodeError: truncated data cuando el número de bytes es impar.

// 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"

En C#, Encoding.Unicode.GetString(Convert.FromBase64String(s)) lee UTF-16LE y Encoding.BigEndianUnicode lee big-endian. Consulta también Python y Node.js.

Preguntas frecuentes

¿Cómo sé si un Base64 contiene UTF-16?

Busca muchas A repetidas con un patrón regular, como en SABlAGwAbABvAA==: en UTF-16 cada letra ASCII va acompañada de un byte cero. Un //4 o /v8 al principio es una marca de orden de bytes (BOM) de UTF-16.

¿Por qué veo caracteres chinos al decodificar?

El orden de bytes está invertido. Hello en big-endian leído como little-endian se convierte en 䠀攀氀氀漀. Cambia Juego de caracteres entre UTF-16LE y UTF-16BE.

¿Por qué aparece un � al final del texto?

UTF-16 necesita un número par de bytes. Si el número es impar, el Base64 está cortado o no es UTF-16, y el byte sobrante se convierte en el carácter de sustitución.

¿Cómo decodifico un -EncodedCommand de PowerShell?

El valor que sigue a -EncodedCommand (o -enc) es Base64 de texto UTF-16LE, así que esta página lo decodifica. El decodificador de PowerShell acepta además la línea de comandos completa y encuentra payloads anidados.