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
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.
Por AdminRedactado con herramientas de redacción con IAActualizado Ejemplos verificados: 17
Texto: 17 caracteres; UTF-8: 21 Bytes UTF-8; Base64: 28 caracteres, 1.33 por byte.
17 caracteres → 21 bytes.
Primer grupo: 43 61 66 → 010000 110110 000101 100110 → 16, 54, 5, 38 → «Q2Fm».
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 (�).
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.
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 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.
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.
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.
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.
| Escenario | Puntos de código | Bytes indicados | Unidades UTF-16 |
|---|---|---|---|
| Predeterminado | 17 | 21 | 17 |
| Modo Unicode | 3 | 8 | 4 |
| Marcas combinantes | 2 | 3 | 2 |
| Secuencia de emoji | 7 | 25 | 11 |
| Hexadecimal UTF-8 no válido | 2 | 2 | 2 |
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.
Fuente de comprobación: Comprobación del ejemplo: Vectores de prueba de RFC 4648 §10
Fuente de comprobación: Cálculo independiente
Fuente de comprobación: el alfabeto estándar da PDw/Pz8+Pg==
Fuente de comprobación: Cálculo independiente
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.
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.
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.
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 +.
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).
Esta calculadora incluye 17 ejemplos resueltos con respuestas de fuentes independientes. Forman parte del conjunto de pruebas y también puedes ejecutarlos aquí.