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

UTF-16 para Base64: codificar texto em UTF-16LE ou UTF-16BE

O texto é convertido em bytes UTF-16 little-endian, o formato que o Windows e o .NET usam para strings, e depois codificado em Base64. Mude o charset para UTF-16BE para sistemas big-endian.

Grátis sem cadastro, sem limites Local nada é enviado LE / BE ordem dos bytes selecionável, sem BOM 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 codificar texto como Base64 de UTF-16

  1. Digite ou cole o texto em Entrada · texto. O Charset já vem em UTF-16LE.
  2. Copie o Base64 de Saída · Base64. O número Entrada mostra a quantidade de bytes UTF-16, o dobro do comprimento de um texto simples em inglês.
  3. Para um consumidor big-endian, mude o Charset para UTF-16BE.
  4. Inverter decodifica o resultado de novo para uma conferência rápida; Base64 para UTF-16 é o decodificador dedicado.

UTF-16LE vs UTF-16BE

O UTF-16 guarda cada caractere como uma ou duas unidades de código de 16 bits. Little-endian escreve o byte menos significativo primeiro, big-endian o mais significativo. Windows e .NET usam little-endian; o codificador UTF-16 do Java e muitos formatos de rede usam big-endian.

TextoBytes UTF-16LEBase64 UTF-16LEBase64 UTF-16BE
Hi48 00 69 00SABpAA==AEgAaQ==
Hello10 bytesSABlAGwAbABvAA==AEgAZQBsAGwAbw==
€AC 20rCA=IKw=
👋3D D8 4B DCPdhL3A==2D3cSw==

Caracteres fora do Plano Multilíngue Básico, incluindo todos os emojis, ocupam duas unidades de código, chamadas de par substituto (surrogate pair). 👋 (U+1F44B) vira D83D DC4B, que são os 4 bytes da última linha.

Como cada letra ASCII vem acompanhada de um byte zero, o Base64 em UTF-16 de um texto em inglês fica salpicado de caracteres A. Vale a pena decodificar como UTF-16 uma string desconhecida com esse padrão.

Onde o Base64 de UTF-16 é usado

  • -EncodedCommand do PowerShell. powershell -EncodedCommand RwBlAHQALQBEAGEAdABlAA== executa Get-Date. Um motivo frequente de falha desses comandos é um script codificado como UTF-8. A ferramenta PowerShell EncodedCommand adiciona o prefixo do comando, avisa sobre o limite de comprimento do cmd.exe e também decodifica comandos encontrados em logs.
  • Código .NET. Encoding.Unicode no C# é UTF-16LE, então Convert.ToBase64String(Encoding.Unicode.GetBytes(s)) gera a mesma saída que esta página.
  • Dados do Windows. Strings do registro, de colunas NVARCHAR convertidas para binário no SQL Server e de muitas APIs do Windows são UTF-16LE.

Byte order marks

Esta ferramenta não escreve byte order mark, que é o que o PowerShell e a maioria das APIs querem. Algumas bibliotecas adicionam um automaticamente:

OrigemPrimeiros bytesBase64 de Hi
Esta ferramenta, UTF-16LE48 00SABpAA==
Python "Hi".encode("utf-16")FF FE 48 00//5IAGkA
Java "Hi".getBytes(UTF_16)FE FF 00 48/v8ASABp

Se o seu Base64 precisa bater com um desses, codifique com uma ordem de bytes explícita no código, como abaixo.

UTF-16 para Base64 no código

import base64

base64.b64encode("Get-Date".encode("utf-16-le")).decode()   # 'RwBlAHQALQBEAGEAdABlAA=='
base64.b64encode("Hi".encode("utf-16-be")).decode()         # 'AEgAaQ=='
// Node.js has a little-endian codec only
Buffer.from("Get-Date", "utf16le").toString("base64");   // "RwBlAHQALQBEAGEAdABlAA=="
[Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Get-Date'))

No Python, use utf-16-le em vez de utf-16, a menos que você queira o BOM. Mais exemplos: Python, Node.js.

Perguntas frequentes

Por que o PowerShell precisa de Base64 em UTF-16LE?

O powershell -EncodedCommand espera o Base64 dos bytes UTF-16LE do script, porque é assim que o Windows guarda strings internamente. Um Base64 de UTF-8 decodifica para os caracteres errados e o comando falha. A ferramenta PowerShell EncodedCommand monta a linha de comando inteira.

Qual é a diferença entre UTF-16LE e UTF-16BE?

A ordem dos dois bytes em cada unidade de código. H é 48 00 em little-endian e 00 48 em big-endian, então Hi vira SABpAA== ou AEgAaQ==.

A saída vai começar com um byte order mark?

Não, só os bytes do próprio texto são codificados. O codec "utf-16" do Python e o charset UTF_16 do Java adicionam um, e é por isso que o Base64 deles começa com //5 ou /v8.

Por que o Base64 de UTF-16 é tão longo?

O UTF-16 usa pelo menos 2 bytes por caractere, então um texto em inglês dobra de tamanho antes de o Base64 somar o seu terço. Hello tem 8 caracteres Base64 em UTF-8 e 16 em UTF-16.