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

UTF-16 a Base64: codificar texto UTF-16LE o UTF-16BE

El texto se convierte en bytes UTF-16 little-endian, el formato que usan Windows y .NET para las cadenas, y después se codifica en Base64. Cambia el juego de caracteres a UTF-16BE para sistemas big-endian.

Gratis sin registro, sin límites Local no se sube nada LE / BE orden de bytes a elegir, sin BOM 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 codificar texto como Base64 UTF-16

  1. Escribe o pega tu texto en Entrada · texto. Juego de caracteres viene ajustado a UTF-16LE.
  2. Copia el Base64 de Salida · Base64. La cifra Entrada muestra el número de bytes UTF-16, el doble de la longitud de un texto inglés normal.
  3. Para un consumidor big-endian, cambia Juego de caracteres a UTF-16BE.
  4. Intercambiar vuelve a decodificar el resultado para una comprobación rápida; Base64 a UTF-16 es el decodificador específico.

UTF-16LE frente a UTF-16BE

UTF-16 guarda cada carácter como una o dos unidades de código de 16 bits. Little-endian escribe primero el byte bajo; big-endian, primero el alto. Windows y .NET usan little-endian; el codificador UTF-16 de Java y muchos formatos de red usan 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==

Los caracteres fuera del plano multilingüe básico, incluidos todos los emoji, ocupan dos unidades de código llamadas par sustituto. 👋 (U+1F44B) se convierte en D83D DC4B, que son los 4 bytes de la última fila.

Como cada letra ASCII va emparejada con un byte cero, el Base64 UTF-16 de un texto en inglés está salpicado de caracteres A. Vale la pena decodificar como UTF-16 una cadena desconocida con ese patrón.

Dónde se usa Base64 de UTF-16

  • -EncodedCommand de PowerShell. powershell -EncodedCommand RwBlAHQALQBEAGEAdABlAA== ejecuta Get-Date. Un motivo frecuente por el que estos comandos fallan es un script codificado como UTF-8. La herramienta PowerShell EncodedCommand añade el prefijo del comando, avisa del límite de longitud de cmd.exe y también decodifica comandos encontrados en logs.
  • Código .NET. Encoding.Unicode en C# es UTF-16LE, así que Convert.ToBase64String(Encoding.Unicode.GetBytes(s)) produce la misma salida que esta página.
  • Datos de Windows. Las cadenas del registro, de columnas NVARCHAR convertidas a binario en SQL Server y de muchas API de Windows son UTF-16LE.

Marcas de orden de bytes

Esta herramienta no escribe marca de orden de bytes, que es lo que quieren PowerShell y la mayoría de las API. Algunas bibliotecas añaden una automáticamente:

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

Si tu Base64 tiene que coincidir con alguno de ellos, codifica en el código con un orden de bytes explícito, como se ve abajo.

UTF-16 a Base64 en 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'))

En Python usa utf-16-le en lugar de utf-16 salvo que quieras la BOM. Más ejemplos: Python, Node.js.

Preguntas frecuentes

¿Por qué PowerShell necesita Base64 en UTF-16LE?

powershell -EncodedCommand espera el Base64 de los bytes UTF-16LE del script, porque así guarda Windows las cadenas internamente. El Base64 de UTF-8 se decodifica en caracteres incorrectos y el comando falla. La herramienta PowerShell EncodedCommand genera la línea de comandos completa.

¿Qué diferencia hay entre UTF-16LE y UTF-16BE?

El orden de los dos bytes de cada unidad de código. H es 48 00 en little-endian y 00 48 en big-endian, así que Hi se codifica como SABpAA== o AEgAaQ==.

¿La salida empieza con una marca de orden de bytes?

No, solo se codifican los bytes del propio texto. El códec "utf-16" de Python y el charset UTF_16 de Java sí añaden una, y por eso su Base64 empieza por //5 o /v8.

¿Por qué el Base64 de UTF-16 es tan largo?

UTF-16 usa al menos 2 bytes por carácter, así que el texto en inglés duplica su tamaño antes de que Base64 añada su tercio. Hello son 8 caracteres Base64 en UTF-8 y 16 en UTF-16.