Esimerkki JavaScriptin URL-koodauksesta - Kuinka käyttää encodeURIcomponent () ja encodeURI ()
Saatat ajatella niin encodeURI
ja encodeURIComponent
tehdä saman, ainakin heidän nimensä perusteella. Ja saatat olla hämmentynyt, mitä käyttää ja milloin.
Tässä artikkelissa selvitän eron encodeURI
ja encodeURIComponent
.
Mikä on URI ja miten se eroaa URL-osoitteesta?
URI on lyhenne sanoista Uniform Resource Identifier.
URL on lyhenne sanoista Uniform Resource Locator.
Kaikki, mikä yksilöi resurssin yksilöllisesti, on sen URI, kuten tunnus, nimi tai ISBN-numero. URL-osoite määrittelee resurssin ja miten siihen pääsee (protokolla). Kaikki URL-osoitteet ovat URI-tiedostoja, mutta kaikki URI-osoitteet eivät ole URL-osoitteita.
Miksi meidän on koodattava?
URL-osoitteissa voi olla vain tiettyjä merkkejä tavallisesta 128 merkin ASCII-joukosta. Varatut merkit, jotka eivät kuulu tähän sarjaan, on koodattava.
Tämä tarkoittaa, että meidän on koodattava nämä merkit siirryttäessä URL-osoitteeseen. Erikoismerkkejä, kuten &
, space
, !
kun merkitään url täytyy piilottaa, sillä ne voivat aiheuttaa ennalta arvaamattomia tilanteita.
Käytä koteloita:
- Käyttäjä on lähettänyt arvot muodossa, joka voi olla merkkijonomuotoinen ja joka on välitettävä, kuten URL-kentät.
- Tarve hyväksyä kyselymerkkijonoparametrit GET-pyyntöjen tekemiseksi.
Mitä eroa on encodeURI: lla ja encodeURIC-komponentilla?
encodeURI
ja encodeURIComponent
niitä käytetään koodaamaan yhdenmukaiset resurssitunnisteet (URI) korvaamalla tietyt merkit yhdellä, kahdella, kolmella tai neljällä pakosekvenssillä, jotka edustavat merkin UTF-8-koodausta.
encodeURIComponent
tulisi käyttää URI- komponentin koodaamiseen - merkkijonon, jonka oletetaan olevan osa URL-osoitetta.
encodeURI
tulisi käyttää URI: n tai olemassa olevan URL-osoitteen koodaamiseen .
Tässä on kätevä taulukko merkkien koodauksen eroista
Mitkä merkit on koodattu?
encodeURI()
ei koodaa: [email protected]#$&*()=:/,;?+'
encodeURIComponent()
ei koodaa: ~!*()'
Merkit A-Z a-z 0-9 - _ . ! ~ * ' ( )
eivät ole välttyneet.
Esimerkkejä
const url = '//www.twitter.com' console.log(encodeURI(url)) ////www.twitter.com console.log(encodeURIComponent(url)) //https%3A%2F%2Fwww.twitter.com const paramComponent = '?q=search' console.log(encodeURIComponent(paramComponent)) //"%3Fq%3Dsearch" console.log(url + encodeURIComponent(paramComponent)) ////www.twitter.com%3Fq%3Dsearch
Milloin koodata
Kun hyväksyt syötteen, jossa voi olla välilyöntejä.
encodeURI("//www.mysite.com/a file with spaces.html") ////www.mysite.com/a%20file%20with%20spaces.html
Kun rakennetaan URL-osoite kyselymerkkijonoparametreista.
let param = encodeURIComponent('mango') let url = "//mysite.com/?search=" + param + "&length=99"; ////mysite.com/?search=mango&length=99
Kun hyväksyt kyselyparametrit, joissa voi olla varattuja merkkejä.
let params = encodeURIComponent('mango & pineapple') let url = "//mysite.com/?search=" + params; ////mysite.com/?search=mango%20%26%20pineapple
Yhteenveto
Jos sinulla on täydellinen URL-osoite, käytä encodeURI
. Mutta jos sinulla on osa URL-osoitteesta, käytä encodeURIComponent
.
Kiinnostaako lisää opetusohjelmia ja JSBytes-minua? Tilaa uutiskirje. tai seuraa minua Twitterissä