Skip to main content
·9 min de lectura

Entendiendo la Codificación: Base64, URL, UTF-8 Explicado

Compartir:𝕏LinkedIn

Alguna vez pegaste texto de una aplicacion a otra y viste caracteres extranos como “–” aparecer donde deberia haber un guion largo? Esa experiencia frustrante—conocida como mojibake—afecta a millones de usuarios cada dia y es el resultado directo de desajustes de codificacion. Entender como funciona la codificacion no es solo un ejercicio academico; es una habilidad practica que previene la corrupcion de datos, errores de seguridad y experiencias de usuario rotas en toda la web.

Que es la codificacion y por que existe?

A nivel más fundamental, las computadoras solo entienden numeros. Cada caracter que ves en pantalla—letras, digitos, puntuacion, emoji—se almacena internamente como una secuencia de digitos binarios (bits). La codificacion es el sistema que mapea caracteres legibles por humanos a valores numericos especificos para que las computadoras puedan almacenar, transmitir y mostrar texto de forma consistente.

Sin un estandar de codificacion compartido, el numero 65 podria representar la letra “A” en una maquina y un caracter completamente diferente en otra. Los estandares de codificacion resuelven esto proporcionando una tabla de consulta universalmente acordada que tanto el emisor como el receptor usan para traducir entre numeros y caracteres. La historia de la codificacion es esencialmente la historia de construir tablas de consulta cada vez más grandes e inclusivas—desde los 128 caracteres de ASCII hasta los más de 150,000 caracteres de Unicode.

Para los desarrolladores y cualquiera que trabaje con datos de texto, entender la codificacion es esencial para construir aplicaciones confiables, depurar misteriosos problemas de corrupcion de caracteres y trabajar correctamente con contenido multilingue. Nuestro conjunto de Herramientas de Texto proporciona varias utilidades de codificacion y decodificacion que pueden ayudarte a trabajar con diferentes formatos de codificacion directamente en tu navegador.

ASCII: donde todo comenzo

El Codigo Estandar Americano para el Intercambio de Informacion (ASCII) fue publicado en 1963 y se convirtio en la base sobre la cual se construyen todos los sistemas de codificacion modernos. ASCII define 128 caracteres usando 7 bits por caracter: 33 caracteres de control no imprimibles (como nueva linea, tabulacion y retorno de carro) y 95 caracteres imprimibles (letras mayusculas y minusculas del ingles, digitos del 0 al 9, puntuacion y un punado de simbolos).

Las limitaciones de ASCII se hicieron evidentes casi de inmediato. Con solo 128 puntos de codigo, no habia espacio para caracteres acentuados usados en frances, aleman o espanol, y mucho menos para escrituras no latinas como chino, arabe o hindi. Varios esquemas de “ASCII extendido” intentaron usar el 8vo bit no utilizado para agregar otros 128 caracteres, pero diferentes regiones crearon diferentes extensiones (ISO 8859-1 para idiomas de Europa Occidental, ISO 8859-5 para cirilico, Windows-1252 para sistemas Microsoft, y muchos otros). Esta fragmentacion fue una fuente importante de problemas de compatibilidad: un documento creado con una página de códigos mostraba texto ilegible en un sistema que usaba una página de códigos diferente.

A pesar de su edad, ASCII sigue siendo relevante hoy. Cada caracter ASCII ocupa la misma posicion en UTF-8, lo que significa que el texto ASCII puro es automaticamente UTF-8 valido. Los encabezados HTTP, los protocolos de correo electronico, la sintaxis de lenguajes de programacion y la mayoria de los formatos de archivos de configuracion estan construidos sobre ASCII como linea base comun.

Unicode y UTF-8: la solucion universal

Unicode fue creado a finales de los anos 1980 con un objetivo ambicioso: asignar un identificador numerico unico (llamado “punto de codigo”) a cada caracter en cada sistema de escritura del mundo. A partir de Unicode 16.0 (lanzado en 2024), el estandar define más de 154,000 caracteres que cubren 168 escrituras, asi como miles de emoji, simbolos matematicos, notacion musical y escrituras historicas.

Un punto de codigo Unicode se escribe como U+ seguido de un numero hexadecimal. Por ejemplo, U+0041 es la letra latina mayuscula “A,” U+00E9 es la “e” con acento agudo, y U+1F600 es el emoji de cara sonriente. Unicode en si es un conjunto de caracteres— asigna numeros a caracteres pero no especifica como esos numeros deben almacenarse como bytes. Ese trabajo recae en las formas de codificacion, la más importante de las cuales es UTF-8.

UTF-8 (Formato de Transformacion Unicode, 8 bits) es una codificacion de longitud variable que usa de uno a cuatro bytes por caracter:

  • 1 byte (0xxxxxxx): Caracteres ASCII (U+0000 a U+007F). Esto significa que UTF-8 es retrocompatible con ASCII.
  • 2 bytes (110xxxxx 10xxxxxx): Extensiones de escritura latina, griego, cirilico, arabe, hebreo (U+0080 a U+07FF).
  • 3 bytes (1110xxxx 10xxxxxx 10xxxxxx): La mayor parte del Plano Multilingue Basico, incluyendo caracteres chinos, japoneses y coreanos (U+0800 a U+FFFF).
  • 4 bytes (11110xxx 10xxxxxx 10xxxxxx 10xxxxxx): Emoji, escrituras historicas, simbolos matematicos y otros caracteres suplementarios (U+10000 a U+10FFFF).

Este diseño de longitud variable es lo que hace a UTF-8 tan eficiente y dominante. El texto en ingles consume el mismo espacio que ASCII (1 byte por caracter), mientras que los caracteres de otras escrituras usan solo los bytes adicionales que necesitan. A partir de 2026, UTF-8 es usado por más del 98% de todos los sitios web, convirtiendolo en el estandar de facto para texto en internet.

Existen otras formas de codificacion Unicode: UTF-16 usa dos o cuatro bytes por caracter y se usa internamente por JavaScript, Java y Windows. UTF-32 usa exactamente cuatro bytes por caracter, haciendo el acceso aleatorio trivial pero desperdiciando espacio para texto predominantemente ASCII. Para desarrollo web y la mayoria de aplicaciones modernas, UTF-8 es la eleccion clara.

Codificacion de URL (codificacion de porcentaje)

Las URLs solo pueden contener un conjunto limitado de caracteres ASCII. La especificacion RFC 3986 define que caracteres son “no reservados” y pueden aparecer en URLs sin tratamiento especial: letras mayusculas y minusculas, digitos, guiones, puntos, guiones bajos y tildes. Todo lo demas—incluyendo espacios, caracteres especiales y caracteres no ASCII—debe ser “codificado en porcentaje.”

La codificacion de porcentaje reemplaza cada byte de la representacion UTF-8 del caracter con un signo de porcentaje seguido de dos digitos hexadecimales. Por ejemplo, un espacio se convierte en %20, el signo arroba se convierte en %40, y la e con acento agudo (é, bytes UTF-8 0xC3 0xA9) se convierte en %C3%A9. Esto asegura que las URLs permanezcan validas incluso cuando incluyen caracteres que tienen significado especial en la sintaxis de URL (como ?, &, = y #).

Escenarios comunes donde la codificacion de URL es esencial:

  • Parametros de consulta: Al pasar entrada del usuario en URLs (ej., consultas de busqueda), los caracteres especiales deben codificarse para evitar que se interpreten como delimitadores de URL.
  • Envios de formularios: Los formularios HTML con method="GET" codifican los datos del formulario en la URL usando el formato application/x-www-form-urlencoded, donde los espacios se convierten en signos + (una peculiaridad historica) y otros caracteres especiales se codifican en porcentaje.
  • Nombres de dominio internacionalizados: Los nombres de dominio no ASCII usan codificacion Punycode (un sistema separado de la codificacion de porcentaje) para representar nombres de dominio Unicode en forma compatible con ASCII.
  • Solicitudes de API: Los endpoints de API REST y sus parametros frecuentemente incluyen caracteres especiales codificados, particularmente al transmitir JSON, fechas o rutas de archivos como parametros de consulta.

En JavaScript, encodeURIComponent() codifica una cadena para su inclusion segura en un componente de URL, mientras que decodeURIComponent() revierte el proceso. Nuestras Herramientas de Texto incluyen utilidades de codificacion y decodificacion de URL que te permiten codificar o decodificar rapidamente cualquier cadena.

Base64: codificando binario como texto

Base64 es un esquema de codificacion de binario a texto que representa datos binarios usando un conjunto de exactamente 64 caracteres ASCII imprimibles (A–Z, a–z, 0–9, +, /) más el signo igual para relleno. Fue disenado originalmente para permitir que los archivos adjuntos binarios viajaran de forma segura a traves de sistemas de correo electronico que solo podian manejar texto ASCII de 7 bits.

El algoritmo funciona tomando tres bytes de entrada (24 bits) y dividiendolos en cuatro grupos de seis bits cada uno. Cada grupo de 6 bits se mapea a uno de los 64 caracteres del alfabeto Base64. Cuando la longitud de la entrada no es multiplo de tres, se agregan uno o dos caracteres de relleno = a la salida. Esto significa que Base64 siempre aumenta el tamaño de los datos exactamente un 33%—tres bytes de entrada producen cuatro bytes de salida.

Casos de uso comunes para Base64 incluyen:

  • URIs de datos: Incrustar imágenes pequenas directamente en HTML o CSS como data:image/png;base64,... para eliminar solicitudes HTTP adicionales.
  • Archivos adjuntos de correo (MIME): Codificar archivos binarios para transmision segura a traves de SMTP.
  • Payloads JSON: Transmitir datos binarios (imágenes, archivos, claves criptograficas) dentro de JSON, que solo soporta valores de texto.
  • JSON Web Tokens (JWT): El encabezado y el payload de un JWT estan codificados en Base64URL (una variante segura para URLs que usa - y _ en lugar de + y /).

Un punto critico que vale la pena repetir: Base64 no es encriptacion. No proporciona ninguna confidencialidad. Cualquiera puede decodificar una cadena Base64 instantaneamente. Nunca lo uses para “proteger” contraseñas, claves de API o datos sensibles. Para una exploracion detallada de Base64 incluyendo consideraciones de rendimiento y ejemplos de codigo, lee nuestra guia de Codificacion Base64 Explicada. Tambien puedes probar la codificacion y decodificacion de imágenes con nuestro Codificador de Imágenes Base64.

Conjuntos de caracteres, collation y errores de codificacion comunes

Un conjunto de caracteres define que caracteres estan disponibles (ej., Unicode define más de 154,000 caracteres). Una codificacion define como esos caracteres se representan como bytes (ej., UTF-8, UTF-16). La collation define como los caracteres se ordenan y comparan—si “a” es igual a “A,” si “ä” se ordena junto a “a” o despues de “z,” y como se aplican las reglas de ordenamiento especificas de cada idioma. Estos tres conceptos son distintos pero frecuentemente confundidos, y equivocarse en cualquiera de ellos puede causar problemas sutiles y dificiles de depurar.

Mojibake es el termino para el texto ilegible que aparece cuando el texto se decodifica usando la codificacion incorrecta. Por ejemplo, la secuencia de bytes UTF-8 para “é” (0xC3 0xA9) se mostrara como “é” si se decodifica incorrectamente como Windows-1252. Las causas comunes de mojibake incluyen:

  • Declaracion de charset faltante o incorrecta: Si una página HTML no incluye <meta charset="utf-8">, el navegador puede adivinar la codificacion incorrecta.
  • Desajuste de codificacion en la base de datos: Una base de datos MySQL configurada en latin1 que recibe datos UTF-8 corrompera los caracteres multi-byte. Siempre usa utf8mb4 en MySQL para soportar el rango completo de Unicode incluyendo emoji.
  • Archivo guardado en codificacion incorrecta: Un archivo CSV guardado como Windows-1252 pero abierto como UTF-8 (o viceversa) mostrara caracteres especiales corruptos.
  • Doble codificacion: Aplicar la codificacion UTF-8 dos veces convierte “é” en una secuencia de cuatro bytes que se muestra como “é”—una senal reveladora de doble codificacion.
  • Respuesta de API sin charset en Content-Type: Si una API devuelve JSON sin especificar Content-Type: application/json; charset=utf-8, el cliente puede interpretar la respuesta usando una codificacion predeterminada que no coincide.

Al depurar problemas de codificacion, las herramientas que te permiten inspeccionar los valores de bytes crudos del texto son invaluables. Nuestras Herramientas de Texto pueden ayudarte a examinar códigos de caracteres, convertir entre formatos y aislar problemas de codificacion. Para datos estructurados, nuestro Formateador de JSON validara y formateara payloads JSON para que puedas detectar secuencias Unicode escapadas como \u00e9. Puedes aprender más sobre las mejores practicas de JSON en nuestra Guía de Formato y Validación JSON.

Codificacion en APIs y desarrollo web

Para los desarrolladores web, la codificacion aparece en practicamente cada capa del stack. Aqui hay una lista de verificacion de mejores practicas de codificacion que te salvaran de los errores más comunes:

  1. Siempre declara UTF-8: Incluye <meta charset="utf-8"> como el primer elemento dentro de <head> en cada documento HTML. Establece Content-Type: text/html; charset=utf-8 en los encabezados de tu servidor.
  2. Configura tu base de datos correctamente: Usa el conjunto de caracteres utf8mb4 y la collation utf8mb4_unicode_ci en MySQL. En PostgreSQL, UTF-8 es la codificacion predeterminada y recomendada.
  3. Establece Content-Type en respuestas de API: Siempre incluye el charset en el encabezado Content-Type de tu API: application/json; charset=utf-8.
  4. Codifica la entrada del usuario en URLs: Usa encodeURIComponent() en JavaScript (o su equivalente en tu lenguaje) antes de insertar valores proporcionados por el usuario en URLs.
  5. Ten cuidado con la longitud de cadenas: En UTF-8, un solo caracter puede ser de 1 a 4 bytes. En JavaScript, los caracteres fuera del Plano Multilingue Basico (como los emoji) se representan como pares sustitutos y tienen un .length de 2, no de 1. Usa Array.from(str).length o el operador spread para obtener el conteo real de caracteres.
  6. Maneja el BOM (Marca de Orden de Bytes) correctamente: Los archivos UTF-8 a veces comienzan con los bytes 0xEF 0xBB 0xBF (el BOM). Aunque es opcional en UTF-8, algunas herramientas lo insertan automaticamente. Si tu parser falla en el primer caracter de un archivo, un BOM oculto puede ser el culpable.
  7. Prueba con entrada diversa: Prueba tu aplicacion con emoji, caracteres CJK, texto de derecha a izquierda (arabe, hebreo) y caracteres combinados (como letras acentuadas construidas a partir de una letra base más un acento combinante). Si tu aplicacion maneja estos correctamente, manejara practicamente cualquier cosa.

Para más tecnicas de procesamiento de texto orientadas a desarrolladores, nuestro articulo Herramientas de Texto que Todo Desarrollador Necesita cubre una amplia gama de utilidades desde la conversion de mayusculas hasta el conteo de palabras y mucho más.

Comienza a trabajar con herramientas de codificacion

La codificacion es uno de esos temas fundamentales que toca cada parte del desarrollo de software, desde como se almacenan los archivos en disco hasta como las APIs transmiten datos a traves de internet. Ya sea que estes depurando mojibake en una base de datos, construyendo parametros de URL para una llamada de API o convirtiendo una imagen a un URI de datos Base64, una comprension solida de los sistemas de codificacion te ahorrara incontables horas de frustracion.

Prueba nuestro Codificador de Imágenes Base64 para convertir imágenes a URIs de datos al instante, o usa nuestras Herramientas de Texto para codificacion de URL, inspeccion de caracteres y otras transformaciones de texto. Todas las herramientas se ejecutan completamente en tu navegador—ningun dato se sube a ningun servidor y no hay nada que registrar. Guardalas en tus marcadores y tenlas en tu kit de herramientas de desarrollador para la proxima vez que surja un problema de codificacion.

Herramientas para Desarrollo y Diseño

Opciones de pago útiles si necesitas soporte, funciones avanzadas o flujos más completos que los de la herramienta gratuita.

Podemos recibir una comisión a través de enlaces de afiliados sin coste adicional para ti.

Priorizamos herramientas que encajan con el caso de uso; no todas las recomendaciones dependen de acuerdos de afiliacion.

Artículos relacionados

Aprende más con nuestras guías detalladas y tutoriales relacionados.

Entendiendo la Codificación: Base64, URL, UTF-8 Explicado | ToolsFree.io