encodeURI vs encodeURIComponent vs RFC 3986: qué cambia cada uno
Compara los tres estándares sobre tu propia cadena y mira la tabla de caracteres sustituidos, byte a byte
Para cuando la pregunta no es «codifícame esto» sino «¿por qué esta cadena se rompe?». Eliges entre los tres criterios —encodeURI, que respeta los caracteres que sostienen la estructura de la dirección; encodeURIComponent, para meter un valor dentro de un parámetro; y RFC 3986 estricto, que además escapa !, ', ( ), * , los que JavaScript se deja y acaban dando guerra en OAuth y en APIs quisquillosas— y ves el resultado de cada uno sobre tu texto. Debajo se despliega la tabla de las sustituciones que se han aplicado de verdad (Espacio → %20, y demás), para que puedas señalar con el dedo qué carácter fue el culpable. También decodifica.
🔒 Todo se procesa 100 % en tu navegador. Tus archivos y datos nunca se suben a ningún servidor.
Cómo usar
- Elige el modo: codificar (Encode) o decodificar (Decode).
- Para codificar: selecciona el estándar de destino (valor de parámetro de consulta, URL completa conservando su estructura o RFC 3986) y escribe el texto.
- Para decodificar: pega el texto con secuencias como %20 o %EA%B0... y obtendrás el texto plano al instante.
- Consulta en tiempo real la tabla de caracteres sustituidos y su correspondencia de bytes (espacio -> %20, etc.).
Preguntas frecuentes
- ¿Cuál es la diferencia real entre encodeURI y encodeURIComponent?
- encodeURI conserva los caracteres que dan estructura a una dirección web (:, /, ?, &, =, +...), mientras que encodeURIComponent los codifica todos. Por eso, cuando vas a insertar el 'valor' de un parámetro en la query string, debes usar encodeURIComponent: así la URL no se rompe.
- ¿Por qué necesito la codificación estricta RFC 3986?
- La función encodeURIComponent de JavaScript deja sin codificar algunos caracteres como la exclamación (!), la comilla simple ('), los paréntesis ( y ) y el asterisco (*). Al firmar peticiones OAuth o al comunicarte con APIs estrictas, necesitas ajustarte a RFC 3986 para evitar errores de validación.
- ¿Un espacio siempre se codifica como %20?
- No siempre. encodeURI, encodeURIComponent y RFC 3986 representan el espacio como %20, pero el formato application/x-www-form-urlencoded que usan los envíos de formularios tradicionales sustituye los espacios por un signo más (+). Esta herramienta sigue el estándar de codificación de URI (%20), así que ten en cuenta esta diferencia cuando trabajes con datos de formularios.
