CodeKitHub
Koodaustyökalut

URL-koodain / -purkaja verkossa

Viimeksi päivitetty:

Prosenttikoodaa teksti turvallista käyttöä varten URL-osoitteissa, tai pura koodattu URL takaisin luettavaan muotoon. Valitse komponenttitila (koodaa kaiken, kyselyparametrien arvoille) tai koko-URL-tila (säilyttää ://, ? ja & -rakenteen). Toimii kokonaan selaimessasi.

Mikä tämä työkalu on?

URL-koodaus (prosenttikoodaus) korvaa URL-osoitteissa kielletyt merkit %-merkillä, jota seuraa niiden tavuarvo heksadesimaalina — välilyönnistä tulee %20, ja 你:stä tulee %E4%BD%A0. Ilman tätä merkit kuten välilyönnit, &, ? ja ei-ASCII-teksti rikkoisivat URL-rakenteen tai tulkittaisiin väärin palvelimilla.

Kaksi yleistä tarvetta, ja tämä työkalu tukee molempia: kyselyparametrin sisään menevän arvon koodaus (komponenttitila — koodaa myös / ? & = ), ja kokonaisen URL:n koodaus rakenne säilyttäen (koko-URL-tila — jättää :// ? & koskemattomiksi).

Yksi historiallinen erikoisuus kannattaa tietää: välilyönti on URL-standardin mukaan oikeaoppisesti %20 (RFC 3986), mutta HTML-lomakkeiden lähetykset ovat perinteisesti koodanneet sen plusmerkiksi — siksi näkee sekä q=hello%20world että q=hello+world käytännössä, ja siksi lomakedatan purku vaatii joskus +-merkin käsittelyä erikseen.

Miksi käyttää sitä?

  • Rakenna kyselymerkkijonoja turvallisesti — käyttäjän syöte, jossa on &, = tai välilyöntejä, ei riko URL-osoitettasi.
  • Pura pitkiä koodattuja URL-osoitteita lokeista, analytiikasta tai uudelleenohjausketjuista nähdäksesi, mitä ne oikeasti sanovat.
  • Oikea UTF-8-käsittely kiinalle, emojeille ja muulle ei-ASCII-tekstille.
  • Kaksi tilaa, ettet vahingossa koodaa kokonaisen URL:n : ja / -merkkejä.
  • Ilmainen, välitön, ei latausta palvelimelle.

Käyttöohje

  1. Liitä tekstisi tai URL-osoitteesi syöttökenttään.
  2. Valitse tila: "Komponentti" kyselyparametreihin meneville arvoille, "Koko URL" kokonaisille osoitteille.
  3. Klikkaa "Koodaa" tai "Pura".
  4. Kopioi tulos.

Esimerkki

Syöte

https://example.com/search?q=hello world & 你好

Tuloste

Komponenttitila: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%20%26%20%E4%BD%A0%E5%A5%BD
Koko URL -tila:  https://example.com/search?q=hello%20world%20&%20%E4%BD%A0%E5%A5%BD

Komponenttitila koodaa myös rakennemerkit; koko-URL-tila säilyttää ne.

Yleiset käyttötapaukset

  • Jaettavan URL:n rakentaminen, kun hakusana tai suodatinarvo tulee käyttäjän syötteestä ja saattaa sisältää välilyöntejä, &-merkkejä tai muita erikoismerkkejä.
  • Pitkän seuranta- tai uudelleenohjaus-URL:n purkaminen sähköpostista tai mainoskampanjasta nähdäksesi todellisen kohteen ja parametrit ennen klikkausta.
  • Vianetsintä, kun kyselyparametria ei lueta oikein palvelimella — syynä on usein varattu merkki, joka olisi pitänyt koodata mutta ei ollut.
  • Ei-englanninkielisen (kiina, japani, arabia jne.) arvon valmistelu käytettäväksi URL:n kyselymerkkijonossa.

encodeURIComponent vs. encodeURI käytännössä

Nämä vastaavat suoraan tämän työkalun kahta tilaa ja perustuvat oikeisiin JavaScript-funktioihin, jotka kehittäjät jo tuntevat: encodeURIComponent (komponenttitila) koodaa kaiken paitsi pienen joukon varaamattomia merkkejä, mikä tekee siitä turvallisen mihin tahansa yksittäiseen URL:iin lisättävään arvoon — tätä käytetään kyselyparametriin, polkusegmenttiin tai hash-fragmentin arvoon. encodeURI (koko-URL-tila) jättää URL:n rakennemerkit (:, /, ?, #, &, =) koskemattomiksi, koska se olettaa koodaavasi kokonaisen, jo rakenteellisen URL:n, ei raakaa arvoa — sen käyttäminen yksittäiseen parametriarvoon epäonnistuisi koodaamaan arvon sisältämät & tai = -merkit, mikä on yleisin virhe väärää tilaa valittaessa.

Varatut ja varaamattomat merkit

URL-määritys (RFC 3986) jakaa merkit kahteen ryhmään: varaamattomat merkit (kirjaimet, numerot, - _ . ~) ovat aina turvallisia eikä niitä koskaan koodata, kun taas varatuilla merkeillä (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) on erityismerkitys URL-rakenteessa ja ne vaativat koodauksen vain, kun ne esiintyvät kirjaimellisena datana eivätkä rakenteellisena välimerkkinä. Juuri tästä syystä kaksi tilaa on olemassa — komponenttitila kohtelee varattuja merkkejä suojattavana datana, koko-URL-tila kohtelee niitä säilytettävänä rakenteena. Tämän eron ymmärtäminen on hyödyllisempää kuin sen ulkoa muistaminen, koska se selittää, miksi sama merkki (kuten &) koodataan joskus ja jätetään joskus koskematta riippuen sen roolista kyseisessä URL:ssa.

Usein kysytyt kysymykset

Milloin käytän komponenttitilaa ja milloin koko-URL-tilaa?

Komponenttitila (encodeURIComponent) kun koodaat yksittäisen arvon, joka menee kyselyparametrin sisään — se koodaa myös /, ?, & ja = , jotta ne eivät riko URL:ia. Koko-URL-tila (encodeURI) kun koodaat kokonaisen URL-osoitteen — se säilyttää rakennemerkit, jotta URL toimii edelleen.

Miksi %20 ilmestyi +-merkin sijaan välilyönneille?

Molemmat ovat päteviä eri yhteyksissä. %20 on välilyönnin yleismaailmallinen prosenttikoodaus; + tarkoittaa välilyöntiä vain kyselymerkkijonoissa vanhemmassa application/x-www-form-urlencoded-muodossa. Tämä työkalu käyttää %20:tä, joka toimii kaikkialla.

Miksi purku epäonnistuu virheeseen?

Syöte sisältää virheellisen prosenttisekvenssin, kuten %-merkin, jota ei seuraa kaksi heksanumeroa. Tämä tapahtuu usein, kun URL on katkennut tai purettu kahteen kertaan. Korjaa tai poista rikkinäinen %-sekvenssi.

Mitä on kaksinkertainen koodaus?

Jo koodatun tekstin koodaamista uudelleen: %20:stä tulee %2520, koska itse %-merkki koodataan muotoon %25. Tämä on yleinen virhe — jos purettu tulos sisältää edelleen %-koodeja, pura se vielä kerran.

Käsitteleekö tämä kiinalaisia merkkejä ja emojeja?

Kyllä. Teksti koodataan UTF-8-tavuina, joten 你好:sta tulee %E4%BD%A0%E5%A5%BD ja se puretaan täydellisesti takaisin — sama toimintatapa kuin selaimissa.

Liittyvät työkalut