Salta al contingut

Codificador d'URL: Escapar Caràcters Especials a URLs en Línia Gratuït

Eina gratuïta per escapar cadenes d'URL per codificar caràcters especials a l'instant. Converteix espais, Unicode i símbols al format de percentatge codificat. Perfecte per a APIs, formularis web i URLs internacionals. Prova-ho ara!

Escapador de Cadenes URL

Calculadora de càrrega...
📚

Documentació

Codificació d’URL: què és i com funciona

La codificació d’URL, també anomenada codificació percentual, és una manera de representar caràcters en una adreça web utilitzant només un conjunt reduït de caràcters ASCII segurs. Funciona substituint un caràcter no segur per un signe % seguit de dos dígits hexadecimals. Aquesta eina d’escapament de cadenes d’URL codifica el text de la mateixa manera que la funció integrada encodeURIComponent de JavaScript.

Per què cal codificar les URL

Una URL només pot contenir un conjunt limitat de caràcters: lletres, dígits i un grapat de signes de puntuació. Els espais, les lletres accentuades, els caràcters d’alfabets no llatins i símbols com & o = poden malmetre una URL o canviar-ne el significat si hi apareixen sense codificar. Per exemple, un espai dins d’un enllaç pot fer que un navegador o un servidor llegeixi la URL com dues parts separades. La codificació percentual substitueix aquests caràcters per un codi que tots els navegadors i servidors poden llegir de la mateixa manera.

Caràcters que aquesta eina deixa sense canvis

Aquesta eina no modifica mai els caràcters següents. Es mantenen tal com són:

  • Lletres majúscules i minúscules: A–Z, a–z
  • Dígits: 0–9
  • Els signes de puntuació - . _ ~ ! * ' ( )

Tots els altres caràcters es codifiquen percentualment, inclosos:

  • El caràcter d’espai i signes de puntuació com : / ? # [ ] @ $ & + , ; =
  • Les lletres accentuades i qualsevol altre caràcter no ASCII o Unicode
  • El caràcter % literal, que sempre es converteix en %25, encara que ja formi part d’una seqüència codificada percentualment

Algunes guies generals sobre la sintaxi d’URL agrupen ! * ' ( i ) amb altres signes de puntuació com a caràcters que «potser cal codificar» en alguns contextos. Aquesta eina concreta no els codifica, perquè segueix el conjunt de regles de encodeURIComponent, segons les quals es consideren segurs.

Com calcular una cadena codificada percentualment (fórmula)

L’eina comprova cada caràcter de l’entrada, d’un en un, i aplica aquesta regla:

  1. Si el caràcter és un dels caràcters sense canvis indicats més amunt, es conserva tal com és.
  2. En cas contrari, es converteix en la seqüència de bytes UTF-8 corresponent. Les lletres llatines accentuades, gregues, ciríl·liques i àrabs utilitzen dos bytes. Els caràcters xinesos, japonesos i coreans n’utilitzen tres. Els emoji en fan servir quatre.
  3. S’escriu cada byte com un nombre hexadecimal de dos dígits.
  4. Es posa un % davant de cada parella hexadecimal.
  5. S’uneixen els resultats en ordre per formar la cadena codificada.

Exemple resolt

Entrada: Jürgen & Björk

Procés caràcter per caràcter:

CaràcterResultat
JJ (sense canvis)
ü%C3%BC (bytes UTF-8 0xC3, 0xBC)
rgenrgen (sense canvis)
(espai)%20
&%26
(espai)%20
BjBj (sense canvis)
ö%C3%B6 (bytes UTF-8 0xC3, 0xB6)
rkrk (sense canvis)

Sortida: J%C3%BCrgen%20%26%20Bj%C3%B6rk

Un segon exemple mostra com funciona el conjunt de caràcters sense canvis. Codificar la cadena -_.!~*'() produeix -_.!~*'(), exactament el mateix text, perquè tots els seus caràcters pertanyen al conjunt de caràcters no reservats. Codificar la cadena 100% produeix 100%25, perquè el signe % no és un caràcter segur.

Descodificació d’una cadena codificada percentualment

La descodificació inverteix el procés: cada seqüència %XX es llegeix com un byte hexadecimal, els bytes es tornen a agrupar en el caràcter UTF-8 original i el caràcter substitueix la seqüència. Per exemple, %C3%BC es descodifica de nou com ü, i %20 es descodifica com un espai. Aquesta eina només codifica; cal un descodificador independent per invertir el procés.

Usos habituals

La codificació percentual s’utilitza sempre que el text que ha escrit una persona, i no pas el text escrit per un programador, ha de formar part d’una URL:

  • Caixes de cerca que posen el terme de cerca a la barra d’adreces, com ?q=shoes%20%26%20bags
  • Paràmetres de consulta que contenen noms, adreces o altres dades de l’usuari
  • Enllaços a pàgines amb títols en llengües que utilitzen lletres accentuades o escriptures no llatines
  • Sol·licituds d’API que passen testimonis o identificadors com a part de la URL

Exemples de codi

1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
4

El quote de Python sempre deixa intactes les lletres, els dígits i - . _ ~. Els cinc caràcters addicionals ! * ' ( ) s’han d’indicar a safe per coincidir amb aquesta eina. Sense aquests caràcters, quote retorna %21 %2A %27 %28 %29 en lloc seu.

Historial

La idea de codificar els caràcters no segurs d’una URL es remunta a la RFC 1738 de (4.410 cm) 1994, un dels primers documents que van definir el format de les URL. La RFC 3986, publicada el 2005, va actualitzar les regles i va definir formalment el conjunt de caràcters «no reservats» que mai no cal codificar. encodeURIComponent, la funció de JavaScript en què es basa aquesta eina, segueix un conjunt de caràcters no reservats una mica més ampli que el de la RFC 3986: també deixa sense codificar ! * ' ( i ), d’acord amb una versió anterior de l’especificació dels URI.

Preguntes freqüents

Quina diferència hi ha entre la codificació d’URL i l’escapament d’URL? Són el mateix. Tots dos termes descriuen la codificació percentual, en què un caràcter se substitueix per % seguit de dos dígits hexadecimals.

Per què !, *, ', ( i ) es mantenen sense canvis en aquesta eina? Aquesta eina utilitza encodeURIComponent, que considera segurs aquests cinc caràcters i els deixa exactament tal com s’han escrit. Altres funcions de codificació i alguns servidors poden esperar que es codifiquin, de manera que cal comprovar el sistema de destinació si això causa algun problema.

Quina diferència hi ha entre %20 i + per representar un espai? Tots dos representen un espai. %20 és la codificació percentual general d’un espai. El signe + és un cas especial que només s’utilitza dins de les dades application/x-www-form-urlencoded, el format que utilitzen els enviaments de formularis HTML, i no aquesta eina.

Aquesta eina descodifica textos ja codificats? No. Només codifica. Si l’entrada ja conté un signe %, aquest % es tracta com un caràcter literal i es converteix en %25 a la sortida, en lloc de deixar-se sense canvis.

Com es tracten els caràcters no llatins, com ara el text xinès o àrab? Cada caràcter es converteix primer en la seva seqüència de bytes UTF-8 i després cada byte es codifica percentualment. Un caràcter xinès utilitza tres bytes, de manera que produeix tres grups %XX. Una lletra àrab utilitza dos bytes, de manera que en produeix dos.

Quan es nega aquesta eina a codificar un text? Només quan el text conté la meitat d’un parell de substituts. Un parell de substituts és el codi de dues parts que emmagatzema un caràcter superior a U+FFFF, com ara un emoji. Una meitat sola no té una forma UTF-8 vàlida, de manera que l’eina mostra un error en lloc d’un resultat. L’escriptura habitual no en pot produir cap; normalment prové d’una còpia truncada o d’un enllaç malmès.

Cal codificar una URL sencera o només una part? Només cal codificar les parts que contenen dades de l’usuari, com ara els valors de consulta o els segments de camí, no les parts que formen l’estructura de la URL, com https:// i el nom de domini. Codificar una URL sencera amb un codificador de components també convertiria els caràcters :, / i ? en codis percentuals i malmetria l’adreça.

Referències

  1. RFC 3986 — Identificador uniforme de recursos (URI): sintaxi genèrica
  2. Codificació percentual — Viquipèdia
  3. MDN — encodeURIComponent()
  4. Estàndard d’URL — WHATWG