Enviar um arquivo
  1. base64hub
  2. Ferramentas de texto
  3. Base64 para UTF-16

Base64 para UTF-16: decodificar texto UTF-16LE e BE

Cole um Base64 que contém texto UTF-16 e leia como uma string normal. A página começa em UTF-16LE, o padrão do Windows e do .NET; mude para UTF-16BE se a saída virar caracteres CJK.

Grátis sem cadastro, sem limites Local nada é enviado Atualizado 27 de out. de 2026
Entrada 0 BSaída 0 BTamanho –

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como decodificar Base64 para UTF-16

  1. Cole o Base64 em Entrada · Base64. O Charset já vem em UTF-16LE.
  2. Leia o texto em Saída · texto. O campo Parece ser geralmente indica binário, porque o detector trata bytes zero como sinal de dados binários; a saída de texto continua correta.
  3. Se o resultado for uma fileira de caracteres com cara de CJK, mude o Charset para UTF-16BE.
  4. Se os dados começarem com uma marca de ordem de bytes, Detectar automaticamente escolhe a ordem certa e descarta a marca.
  5. Copiar saída copia o texto; Baixar salva os bytes brutos.

Para a direção inversa, veja UTF-16 para Base64.

Como reconhecer UTF-16 em Base64

O Base64 de UTF-16 tem um ritmo visível. Texto ASCII em UTF-16 alterna bytes de letras com bytes zero, e bits zero viram A no alfabeto Base64, então o A aparece a cada poucos caracteres:

Base64Ordem dos bytesDecodificado
SABlAGwAbABvAA==LE, sem BOMHello
AEgAZQBsAGwAbw==BE, sem BOMHello
//5IAGkALE com BOM FF FEHi
/v8ASABpBE com BOM FE FFHi
RwBlAHQALQBEAGEAdABlAA==LE, sem BOMGet-Date

Texto ASCII em big-endian sempre começa com A, porque o primeiro byte é zero. Uma string que começa com //4 ou /v8 traz uma marca de ordem de bytes no início.

Ordem dos bytes, BOM e detecção automática

Lido com a ordem de bytes errada, cada par de bytes fica trocado e um texto em inglês vira ideogramas CJK: AEgAZQBsAGwAbw== decodificado como UTF-16LE dá 䠀攀氀氀漀. Nada se perde; basta trocar o Charset.

Detectar automaticamente lida bem com UTF-16 quando os dados começam com BOM. Sem BOM, texto ASCII simples em UTF-16 também é UTF-8 válido (bytes zero são permitidos ali), então a detecção automática pode confundi-lo com UTF-8 cheio de caracteres invisíveis. Nesta página, mantenha UTF-16LE ou UTF-16BE escolhido à mão, a menos que veja //4 ou /v8 no início.

Um número ímpar de bytes indica que algo está errado. SABpAAA= contém 5 bytes; decodificado como UTF-16LE, dá Hi e um � no final. Ou o valor foi cortado, ou nem é UTF-16.

De onde vem o Base64 em UTF-16

A origem mais comum é o PowerShell. Comandos codificados como powershell -enc SQBFAFgA... aparecem em tarefas agendadas, scripts de instalação e logs de segurança, e o Base64 é sempre UTF-16LE. O decodificador de EncodedCommand do PowerShell extrai o valor de uma linha de comando completa e procura mais Base64 dentro do script.

Outras origens são programas .NET que chamam Convert.ToBase64String(Encoding.Unicode.GetBytes(...)), dados do registro e de eventos do Windows e valores NVARCHAR do SQL Server exportados como binário.

Como decodificar Base64 em UTF-16 no 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

O Python lança UnicodeDecodeError: truncated data quando a contagem de bytes é ímpar.

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

Em C#, Encoding.Unicode.GetString(Convert.FromBase64String(s)) lê UTF-16LE, e Encoding.BigEndianUnicode lê big-endian. Veja também Python e Node.js.

Perguntas frequentes

Como saber se um Base64 contém UTF-16?

Procure muitos caracteres A em um padrão regular, como em SABlAGwAbABvAA==: em UTF-16, cada letra ASCII fica ao lado de um byte zero. Um //4 ou /v8 no início é a marca de ordem de bytes (BOM) do UTF-16.

Por que aparecem caracteres chineses depois de decodificar?

A ordem dos bytes está invertida. Hello em big-endian lido como little-endian vira 䠀攀氀氀漀. Alterne o Charset entre UTF-16LE e UTF-16BE.

Por que há um � no fim do texto?

O UTF-16 precisa de um número par de bytes. Uma contagem ímpar significa que o Base64 foi cortado ou não é UTF-16, e o byte que sobra vira o caractere de substituição.

Como decodificar um -EncodedCommand do PowerShell?

O valor depois de -EncodedCommand (ou -enc) é Base64 de UTF-16LE, então esta página o decodifica. O decodificador de PowerShell também aceita a linha de comando inteira e encontra payloads aninhados.