Codificar y decodificar URL

Codifica porcentualmente texto para URLs o decodifica secuencias %HH de vuelta a caracteres. Compara modo componente con modo URI completa, y por qué %20 y + no son lo mismo.

Todos los cálculos se ejecutan en el navegador. Nada de lo que introduce se envía a un servidor.

01 calculadora

Los resultados se actualizan al escribir. Ctrl/Cmd+Enter copia el resultado principal.

Resultado

    Mostrar el procedimiento

      Codificar y decodificar URL aplica codificación porcentual RFC 3986 al texto y revierte secuencias %HH de vuelta a caracteres. El modo componente codifica caracteres reservados como /, ? y & para que puedan ir de forma segura dentro de un solo parámetro de consulta. El modo URI completa preserva delimitadores estructurales para que una dirección completa siga siendo un enlace usable. El manejo de espacios ofrece tanto %20 como el signo más de codificación de formularios.

      Toda la codificación y decodificación se ejecuta en el navegador. Nada de lo que pegas se envía a un servidor.

      Codificar texto para uso seguro en una URL

      Concept diagram: Entradas leads to Codificar texto para uso seguro en… leads to ResultadoEntradasCodificar texto parauso seguro en…Resultado
      Codificar texto para uso seguro en una URL.

      La codificación porcentual sustituye bytes no seguros o reservados por un signo de porcentaje seguido de dos dígitos hexadecimales. Los dígitos son el valor del byte, normalmente de UTF-8. Introduce una cadena, elige modo componente o URI completa, y copia el resultado codificado en una cadena de consulta, segmento de ruta o destino de redirección.

      Los caracteres ya en el conjunto no reservado pasan sin cambio. Todo lo demás se convierte en secuencias %HH en modo componente. La codificación es reversible cuando se usan las mismas reglas al decodificar; mezclar el signo más de codificación de formularios con %20 de estilo ruta es la fuente habitual de idas y vueltas rotas.

      Decodificar una cadena codificada porcentualmente

      Scale bar: 1 Unidad de entrada equals 1.8 Unidad de salida1 Unidad de entrada1.8 Unidad de salida
      Decodificar una cadena codificada porcentualmente.

      La decodificación encuentra cada % seguido de dos dígitos hex, convierte ese par a un byte y reconstruye el texto original con la codificación de caracteres seleccionada. Un % suelto o un % con dígitos no hex es un error. Los signos más pueden tratarse opcionalmente como espacios cuando la entrada provino de cuerpos application/x-www-form-urlencoded.

      Aparece codificación anidada cuando un valor se codificó dos veces. Decodificar una vez puede dejar secuencias %25 que representan un porcentaje literal. Decodifica otra vez solo cuando esa segunda capa fue intencional; decodificar a ciegas dos veces corrompe datos que contenían un % real.

      Entender caracteres reservados y no reservados

      Concept diagram: Entradas leads to Entender caracteres reservados y n… leads to ResultadoEntradasEntender caracteresreservados y n…Resultado
      Entender caracteres reservados y no reservados.

      El RFC 3986 divide ASCII en caracteres no reservados que nunca necesitan codificación en un URI, y caracteres reservados que llevan significado estructural como delimitadores. Las letras, dígitos y -_.~ no reservados permanecen literales. Marcas reservadas como /, ? y & deben codificarse porcentualmente cuando aparecen como datos en lugar de como sintaxis que enmarca la URL.

      No reservados: A a Z, a a z, 0 a 9, guion -, guion bajo _, punto ., tilde ~

      Reservados (gen-delims): `: / ?

      Reservados (sub-delims): ! $ & ' ( ) * + , ; =

      Los no reservados permanecen literales. Los reservados deben codificarse cuando aparecen como datos en lugar de como delimitadores. Un signo de interrogación dentro de un valor de parámetro es dato; uno que inicia la cadena de consulta es estructura. La selección de modo es cómo la calculadora sabe qué papel juega cada carácter.

      Codificar una URL completa frente a un solo parámetro

      Comparison chart of Opción A versus Opción B across Case 1, Case 2, Case 3Case 1Case 2Case 3Opción AOpción B
      Codificar una URL completa frente a un solo parámetro.

      La codificación de URI completa, similar a encodeURI de JavaScript, deja intactos los caracteres estructurales para que https:// y las barras de ruta sobrevivan. La codificación de componente, similar a encodeURIComponent, codifica esos caracteres para que un valor pueda ir dentro de un parámetro sin romper la URL circundante. Elegir el modo equivocado destruye un enlace o deja delimitadores que parten la consulta incorrectamente.

      EntradaEstilo URI completaEstilo componente
      https://example.com/a bhttps://example.com/a%20bhttps%3A%2F%2Fexample.com%2Fa%20b
      red&bluered&bluered%26blue
      a=ba=ba%3Db

      Codificar una URL entera con modo componente la destruye como enlace: los dos puntos del esquema y las barras se convierten en %3A y %2F. Codificar un solo parámetro con modo URI completa deja & y = intactos, lo que parte la consulta incorrectamente. Elige el modo que coincida con la ranura que ocupará la cadena.

      Codificar una barra y un signo de interrogación

      Concept diagram: Entradas leads to Codificar una barra y un signo de … leads to ResultadoEntradasCodificar una barra yun signo de …Resultado
      Codificar una barra y un signo de interrogación.

      La cadena fixture / and ? en modo componente se convierte en %2F%20and%20%3F. La barra y el signo de interrogación son delimitadores reservados tratados aquí como texto de carga, así que cada uno se escapa. Los espacios se convierten en %20, mientras las letras de and son no reservadas y pasan sin cambio de izquierda a derecha por la cadena.

      CarácterMotivoCodificado
      /delimitador de ruta reservado%2F
      espaciono reservado%20
      a, n, dletras no reservadassin cambio
      ?delimitador de consulta reservado%3F

      Recorre la cadena de izquierda a derecha: codifica /, codifica el espacio, pasa and, codifica el espacio, codifica ?. El resultado %2F%20and%20%3F es seguro para colocar en un parámetro de consulta llamado, por ejemplo, q. Usar modo URI completa en la misma cadena dejaría / y ? literales, lo cual es correcto solo cuando esos caracteres están pensados como estructura y no como texto de carga.

      Entender %20 frente al signo más

      Comparison chart of Opción A versus Opción B across Case 1, Case 2, Case 3Case 1Case 2Case 3Opción AOpción B
      Entender %20 frente al signo más.

      Un espacio se codifica como %20 en rutas URI y en cadenas de consulta modernas que siguen RFC 3986. Los formularios HTML que envían como application/x-www-form-urlencoded codifican históricamente espacios como + en su lugar. Ambas convenciones aparecen en tráfico de producción, y tratarlas como idénticas es el fallo de codificación de espacios más común al decodificar entradas mixtas.

      ContextoCodificación de espacio
      Segmento de ruta%20
      Consulta RFC 3986%20
      Cuerpo de formulario / consulta heredada+

      Un signo más literal en datos debe codificarse como %2B, o un decodificador de formularios lo tratará como espacio. La calculadora indica qué convención de espacio está activa para que un + decodificado no se confunda con un carácter más cuando el modo formulario está activo, y un %20 no se rechace cuando el modo ruta está activo.

      Descomponer una URL en sus partes

      Concept diagram: Entradas leads to Descomponer una URL en sus partes leads to ResultadoEntradasDescomponer una URL ensus partesResultado
      Descomponer una URL en sus partes.

      Una URL típica tiene esquema, host, puerto opcional, ruta, cadena de consulta y fragmento, y las reglas de codificación difieren por parte. Delimitadores estructurales como ://, /, ?, &, = y # permanecen literales cuando enmarcan la dirección.

      Los nombres de parámetro, valores de parámetro y segmentos de ruta que llevan datos se codifican individualmente en modo componente antes de que esos delimitadores los unan.

      https://example.com:443/search?q=a%20b&lang=en#top
      └─┬─┘   └─────┬─────┘ └─┬──┘ └───────┬───────┘ └┬┘
      scheme       host     path        query      fragment
      ParteFunción
      EsquemaProtocolo, como https
      HostDominio o IP, con puerto opcional
      RutaUbicación del recurso, separada por barras
      ConsultaLista de parámetros tras ?, unidos por &
      FragmentoUbicación del lado cliente tras #, no enviada al servidor en el URI de petición del mismo modo

      Codifica nombres y valores de parámetro individualmente en modo componente, luego únelos con & y = literales. Codifica segmentos de ruta individualmente si contienen espacios o caracteres reservados, manteniendo literales las barras que separan segmentos.

      Leer la tabla de codificación de caracteres

      Concept diagram: Entradas leads to Leer la tabla de codificación de c… leads to ResultadoEntradasLeer la tabla decodificación de c…Resultado
      Leer la tabla de codificación de caracteres.

      La tabla siguiente lista caracteres reservados y no seguros habituales con sus formas porcentuales bajo codificación de bytes UTF-8. Un espacio se convierte en %20, un ampersand en %26, y un numeral en %23. Los caracteres no ASCII se expanden a varias unidades %HH porque cada byte UTF-8 se codifica por separado en lugar de como un glifo abstracto.

      CharPorcentualNotas
      espacio%20O + en codificación de formularios
      !%21
      #%23Delimitador de fragmento
      $%24
      &%26Delimitador de par de consulta
      '%27
      (%28
      )%29
      +%2BSigno más literal
      ,%2C
      /%2FDelimitador de ruta
      :%3ASeparador esquema / host
      ;%3B
      =%3DAsignación de parámetro
      ?%3FInicio de consulta
      @%40Separador userinfo
      [%5B
      ]%5D

      El texto no ASCII se expresa primero como bytes UTF-8, luego cada byte se codifica porcentualmente. Un solo carácter visible puede expandirse por tanto a dos o tres unidades %HH. Los análisis profundos de codificación de caracteres para Shift JIS y conjuntos heredados similares viven con la herramienta Base64; esta página enlaza en lugar de repetir ese catálogo.

      Preguntas frecuentes

      ¿Qué es la codificación porcentual?

      La codificación porcentual sustituye un byte por un % seguido de dos dígitos hexadecimales del valor de ese byte. Permite que caracteres reservados y no ASCII viajen dentro de URLs sin leerse como sintaxis. La decodificación revierte la sustitución.

      ¿Cuándo debe usarse codificación de componente?

      Usa codificación de componente para un solo nombre o valor de parámetro, un segmento de ruta que es puro dato, o cualquier cadena que se insertará junto a delimitadores estructurales. Codifica /, ?, & y = para que no puedan partir la URL.

      ¿Cuándo debe usarse codificación de URI completa?

      Usa codificación de URI completa cuando la entrada ya es una URL completa y solo deben cambiar caracteres ilegales como espacios. Los dos puntos y barras estructurales permanecen literales para que el resultado siga siendo una dirección clicable.

      ¿Por qué / and ? se convierte en %2F%20and%20%3F?

      En modo componente la barra y el signo de interrogación se tratan como datos, así se codifican a %2F y %3F. Los espacios se convierten en %20. Las letras de and son no reservadas y permanecen como están.

      ¿Es + lo mismo que %20?

      No. %20 es la codificación RFC 3986 de un espacio. + significa espacio solo en datos application/x-www-form-urlencoded. Un signo más literal debe ser %2B o los decodificadores de formularios lo convertirán en espacio.

      ¿Qué caracteres nunca necesitan codificación?

      El conjunto no reservado: letras, dígitos, guion, guion bajo, punto y tilde. Esos caracteres permanecen literales en ambos modos. Codificarlos sigue funcionando pero añade longitud innecesaria.

      ¿Cómo se codifican caracteres no ASCII?

      Primero se convierten a bytes UTF-8, luego cada byte se codifica porcentualmente. Un carácter visible puede convertirse en varias secuencias %HH. La decodificación debe usar UTF-8 para reconstruir el texto original.

      ¿Decodificar dos veces arregla una URL rota?

      Solo si el valor se codificó deliberadamente dos veces. De lo contrario la segunda pasada corrompe secuencias % literales que formaban parte de los datos. Decodifica una vez, inspecciona, y decodifica otra vez solo cuando patrones %25 muestren una segunda capa.

      ¿Es esto lo mismo que Base64?

      No. La codificación porcentual escapa caracteres para URIs. Base64 mapea bytes arbitrarios a un alfabeto de 64 caracteres para transporte en protocolos de texto. Usa cada uno para su trabajo.

      ¿Se suben URLs pegadas?

      No. Codificación y decodificación se ejecutan solo en el navegador. Cadenas de consulta que contienen tokens o fragmentos de sesión no se transmiten a un servidor con esta herramienta.

      Resumen

      Codificar y decodificar URL codifica y decodifica porcentualmente texto bajo reglas RFC 3986, con modos separados para URIs completas y componentes individuales. El fixture / and ? se convierte en %2F%20and%20%3F en modo componente. Los espacios usan %20 en contextos URI y pueden usar + en codificación de formularios, que es una convención distinta.

      Los caracteres reservados conservan su significado solo cuando permanecen literales como estructura; codifícalos cuando son carga. Todo el trabajo permanece en el dispositivo.