CalcOpenly
Español

Codificador y decodificador Base64, URL y HTML

Codifica o decodifica Base64, Base64 seguro para URL, codificación porcentual de URL, entidades HTML, bytes hexadecimales y puntos de código Unicode, con recuentos de bytes UTF-8 y UTF-16.

Redactado con herramientas de redacción con IAActualizado Ejemplos verificados: 17

Probar
Resultado
Q2Fmw6kgJiBjcsOobWUsIDUg4oKs
Resultado: Q2Fmw6kgJiBjcsOobWUsIDUg4oKs
Caracteres (puntos de código)
17
Bytes UTF-8
21
Unidades de código UTF-16
17
Longitud del resultado
28caracteres

Texto: 17 caracteres; UTF-8: 21 Bytes UTF-8; Base64: 28 caracteres, 1.33 por byte.

Tallas y tamaños

Caracteres17Bytes UTF-821Bytes UTF-1634Salida Base6428

Bits UTF-8 de los primeros caracteres

“C” U+0043 → 43
0
1
0
0
0
0
1
1
“a” U+0061 → 61
0
1
1
0
0
0
0
1
“f” U+0066 → 66
0
1
1
0
0
1
1
0
“é” U+00E9 → c3 a9
1
1
0
0
0
0
1
1
1
0
1
0
1
0
0
1
Cómo se calcula S
  1. Codificar el texto como UTF-8

    17 caracteres → 21 bytes.

  2. Reagrupar bytes de 8 bits en índices de 6 bits

    Primer grupo: 43 61 66 → 010000 110110 000101 100110 → 16, 54, 5, 38 → «Q2Fm».

  3. Longitud de salida

    4⌈213⌉=284 \left\lceil \frac{21}{3} \right\rceil = 28

Acerca de Codificador y decodificador Base64, URL y HTML

Cada esquema parte de los bytes UTF-8 del texto. Base64 reagrupa cada 3 bytes en cuatro valores de 6 bits de un alfabeto de 64 caracteres (RFC 4648), de modo que la salida tiene 4 × ⌈n ÷ 3⌉ caracteres. La codificación porcentual escribe como %XX cada byte fuera de A–Z, a–z, 0–9 y - . _ ~ (RFC 3986); el escape HTML sustituye & < > " y ' por referencias de caracteres; y el hexadecimal escribe dos cifras por byte.

Se usa para incluir datos binarios en JSON o correo, crear cadenas de consulta, leer JWT y diagnosticar problemas de codificación de caracteres. El texto inicial, «Café & crème, 5 €», tiene 17 caracteres pero 21 bytes UTF-8, porque é y è ocupan 2 bytes cada uno y € ocupa 3. Su forma Base64 tiene 28 caracteres.

Los errores de decodificación indican el carácter incorrecto y su posición; los bytes que no forman UTF-8 válido se muestran como U+FFFD (�).

Elegir una representación para el texto

El codificador convierte texto a Base64, Base64 para URL, codificación porcentual, entidades HTML, bytes hexadecimales o notación Unicode, y permite decodificar esas representaciones. Selecciona el esquema, elige codificar o decodificar e introduce la cadena en el campo activo. Conserva los caracteres exactos cuando quieras reproducir un ejemplo.

La frase inicial es Café & crème, 5 €: contiene 17 puntos de código Unicode, 21 bytes UTF-8 y 17 unidades UTF-16. Su Base64 estándar es Q2Fmw6kgJiBjcsOobWUsIDUg4oKs. Las distintas cuentas describen representaciones de la misma frase, sin afirmar que cada carácter visible ocupe un único byte.

La codificación cambia la escritura de los datos. No cifra su contenido, autentica al autor ni valida su significado. El calculador de resúmenes compara contenido mediante un resumen. Para revisar JSON, utiliza el formateador de JSON después de obtener el texto que realmente quieres interpretar.

Diferenciar caracteres, bytes y unidades de código

La salida de caracteres cuenta puntos de código, no símbolos percibidos ni grupos de grafemas. Una marca combinante se cuenta por separado de la letra modificada. Una secuencia de emoji puede contener varios puntos de código unidos aunque se presente como un único símbolo en pantalla.

En A€😀 hay tres puntos de código y ocho bytes UTF-8: uno para A, tres para el euro y cuatro para el emoji. UTF-16 utiliza cuatro unidades porque el emoji requiere un par sustituto. En notación Unicode, la página muestra 0041 20ac d83d de00 para esa representación UTF-16.

La secuencia e seguida de U+0301 tiene dos puntos de código, tres bytes UTF-8 y dos unidades UTF-16. El ejemplo familiar 👨‍👩‍👧‍👦 contiene siete puntos de código, 25 bytes UTF-8 y once unidades UTF-16. La forma en que una fuente dibuja esa secuencia no cambia sus cuentas de codificación.

El formulario no normaliza secuencias combinantes ni mide glifos o ancho visual. Su límite es 100000 unidades UTF-16, una medida distinta del límite de bytes UTF-8 del calculador de resúmenes. Conserva esa diferencia al preparar textos largos con caracteres que necesitan pares sustitutos o varios bytes.

Base64 estándar, alfabeto para URL y relleno

Base64 estándar utiliza + y / en las posiciones 62 y 63 del alfabeto. La variante para URL utiliza - y _. El decodificador comprueba el alfabeto de la opción elegida. Seleccionarlo correctamente evita tratar un carácter de otra variante como un error inesperado del texto original.

La codificación estándar añade relleno = cuando corresponde. La variante para URL lo omite por defecto y ofrece una opción para incluirlo. El texto <<???>> se escribe PDw_Pz8-Pg en la variante sin relleno y PDw/Pz8+Pg== en Base64 estándar. Son dos representaciones de los mismos bytes.

RFC 4648 define alfabetos, relleno y formas canónicas. El protocolo que utiliza la cadena determina si permite omitir relleno. Aquí se ignoran espacios y se admiten datos sin relleno con longitud compatible. Una cuenta de caracteres de datos 4k + 1, el relleno mal colocado o el exceso de relleno se rechazan.

El decodificador puede admitir bits de relleno no nulos que no sean canónicos. Decodificar correctamente no demuestra por sí solo que la entrada tenga forma canónica. Si esa propiedad importa, vuelve a codificar los bytes y compara con la representación que espera el protocolo de destino.

Codificación porcentual de un componente

La opción URL codifica bytes UTF-8 fuera del conjunto no reservado: letras, dígitos, guion, punto, guion bajo y virgulilla. Ese conjunto se describe en RFC 3986. Elige el componente que quieres transformar en lugar de suponer que todas las partes de una URL se codifican del mismo modo.

El texto a b&c=d/é? se convierte en a%20b%26c%3Dd%2F%C3%A9%3F. Ampersand, igual, barra y signo de interrogación se codifican porque forman parte del valor introducido. Si introduces una URL completa, también se transforma su puntuación estructural. Eso responde a una operación diferente de codificar únicamente un parámetro.

La opción de signo más escribe espacios como + y lee + como espacio al decodificar. Un más literal se codifica como %2B. Con la opción desactivada, a+b se conserva al decodificar; activada, se obtiene a b. Cada % debe ir seguido de dos dígitos hexadecimales: % y %G0 son errores. Un porcentaje literal se escribe %25 en la representación codificada.

Entidades HTML y notación Unicode

La codificación HTML transforma ampersands, signos de menor y mayor y comillas. La opción para caracteres no ASCII produce referencias decimales: Café € se transforma en Café €. Es una transformación de texto, sin implementar un saneador completo de HTML ni un codificador general de cadenas JavaScript.

La decodificación admite el conjunto de entidades con nombre de HTML 4, además de apos y referencias numéricas. Se requiere punto y coma final. Los nombres desconocidos se mantienen y generan un aviso. No se aplica aquí todo el comportamiento del analizador HTML moderno.

El modo Unicode admite notaciones como U+1F600, 0x1F600, escapes con llaves y referencias numéricas de caracteres. Puede combinar un par sustituto alto/bajo válido. Los sustitutos aislados y valores superiores a U+10FFFF se rechazan. Elige el esquema correcto antes de atribuir a la cadena un significado de texto.

Revisar bytes UTF-8 no válidos

El modo hexadecimal interpreta pares de dígitos como bytes, con separadores y prefijos opcionales. No exige que formen UTF-8 válido. Decodificar c3 28 produce �( y un aviso: C3 no tiene el byte de continuación necesario. La salida de bytes conserva dos, correspondientes a los bytes originales; volver a codificar el carácter de sustitución produciría otros bytes.

EscenarioPuntos de códigoBytes indicadosUnidades UTF-16
Predeterminado172117
Modo Unicode384
Marcas combinantes232
Secuencia de emoji72511
Hexadecimal UTF-8 no válido222

La fila Unicode utiliza A€😀. En la última, la cuenta de bytes pertenece a la entrada decodificada, aunque el texto de sustitución tenga otra representación al codificarse de nuevo. Lee la salida completa y los avisos antes de copiarla. Las barras comparan tamaños y el dibujo de bits muestra solo los primeros caracteres, sin sustituir el contenido íntegro.

Ejemplos resueltos

Base64 de «foob» (dos caracteres de relleno)

Codificación
Base64
Dirección
Codificar
Texto
foob
Resultado
Zm9vYg==
Bytes UTF-8
4
Longitud del resultado
8 caracteres

Fuente de comprobación: Comprobación del ejemplo: Vectores de prueba de RFC 4648 §10

Base64 de una cadena vacía

Codificación
Base64
Dirección
Codificar
Resultado
Bytes UTF-8
0
Longitud del resultado
0 caracteres

Fuente de comprobación: Cálculo independiente

Base64 seguro para URL sin relleno

Codificación
Base64 seguro para URL
Dirección
Codificar
Texto
<<???>>
Resultado
PDw_Pz8-Pg
Longitud del resultado
10 caracteres

Fuente de comprobación: el alfabeto estándar da PDw/Pz8+Pg==

Decodificar Base64 a texto chino

Codificación
Base64
Dirección
Decodificar
Texto codificado
5L2g5aW9IOS4lueVjA==
Resultado
你好 世界
Caracteres (puntos de código)
5
Bytes UTF-8
13
Unidades de código UTF-16
5

Fuente de comprobación: Cálculo independiente

Preguntas

¿Por qué Base64 aumenta el tamaño alrededor de un 33 %?

Base64 lleva 6 bits en cada carácter de salida frente a los 8 de cada byte de entrada: cada 3 bytes se convierten en 4 caracteres, una proporción de 4 a 3, con hasta 2 signos = de relleno al final. 21 bytes se convierten en 28 caracteres, y 1 MB binario, en unos 1,33 MB. El correo MIME (RFC 2045) divide además la salida en líneas de hasta 76 caracteres, lo que añade algo más.

¿Qué diferencia hay entre Base64 y Base64URL?

Base64URL (RFC 4648 §5) sustituye + y /, problemáticos en URL y nombres de archivo, por - y _, y suele omitir el relleno =. Los JSON Web Tokens (RFC 7519) lo usan en sus tres partes. El texto <<???>> es PDw/Pz8+Pg== en Base64 estándar y PDw_Pz8-Pg en la forma segura para URL: 10 caracteres en lugar de 12.

¿Base64 es una forma de cifrado?

No. Base64 es una codificación reversible sin clave: cualquiera puede decodificarla en un paso. Solo permite transportar datos binarios como texto. Por ejemplo, la autenticación HTTP Basic (RFC 7617) envía user:password en Base64, por lo que necesita HTTPS para protegerlo durante el transporte. Para proteger los datos, cífralos primero, por ejemplo con AES-256, y codifica después el texto cifrado en Base64 si debe viajar como texto.

¿Un espacio se codifica en una URL como %20 o como +?

Ambos aparecen, en contextos distintos. RFC 3986, que regula las URL, codifica el espacio como %20, mientras que los formularios HTML (application/x-www-form-urlencoded) lo escriben como +. Por eso a+b en la consulta de un formulario significa a b, pero en la ruta de una URL, + es un signo más literal. encodeURIComponent de JavaScript produce %20, y urllib.parse.quote_plus de Python produce +.

¿Cuántos bytes ocupa un carácter en UTF-8?

De uno a cuatro. Los puntos de código inferiores a U+0080 (ASCII) ocupan 1 byte; hasta U+07FF, 2 (é, ñ, griego, cirílico); hasta U+FFFF, 3 (€ y la mayoría de caracteres chinos); y los demás, 4, incluidos emojis como 😀 (U+1F600). Así, A€😀 tiene 3 caracteres, 8 bytes UTF-8 y 4 unidades de código UTF-16, porque 😀 necesita un par sustituto en UTF-16 (RFC 3629).

Acerca de esta calculadora

Base64 length=4⌈n3⌉hex length=2nn=UTF-8 bytes\begin{aligned} \text{Base64 length} &= 4\left\lceil \frac{n}{3} \right\rceil \\ \text{hex length} &= 2n \\ n &= \text{UTF-8 bytes} \end{aligned}

Fuentes

  1. RFC 4648 — The Base16, Base32, and Base64 Data Encodings
  2. RFC 3986 §2 — URI characters and percent-encoding
  3. RFC 3629 — UTF-8, a transformation format of ISO 10646
  4. WHATWG HTML — Named character references
  5. The Unicode Standard, §3.9 Unicode encoding forms

Verificado con las referencias

Esta calculadora incluye 17 ejemplos resueltos con respuestas de fuentes independientes. Forman parte del conjunto de pruebas y también puedes ejecutarlos aquí.

Pon esta calculadora en tu sitio

Pega esto donde quieras que aparezca la calculadora. Su uso es gratuito, se mantiene al día con las correcciones que hacemos aquí y el crédito que aparece debajo enlaza con la versión completa, para que tus lectores puedan consultarla.

Altura
Vista previa de la inserción

Conserva el crédito. Es la única condición y es lo que mantiene gratuitas estas calculadoras.