Digitális és informatikai

URL-kódolás: ékezetek, szóközök és kettős kódolás ellenőrzése

Egy magyar keresőkifejezésen követjük a bájtokat a százalékos URL-kódolásig. Megmutatjuk az elválasztójelek, a pluszjel és a kétszeri kódolás eltéréseit.

Dajka Gábor3 perc olvasás

Egy URL-be kerülő magyar keresőkifejezést önálló paraméterértékként kódolj. A teljes címet egyetlen szövegként átalakítva könnyen eltüntetheted azokat az elválasztójeleket is, amelyekből a böngésző vagy a szerver felismeri a cím részeit. A hibakeresésnél ezért előbb azt döntsd el, pontosan melyik rész volt adat, és melyik rész választotta el az adatokat.

Mit jelent a százalékjel utáni két karakter?

A százalékos jelölés egy bájtot ír le két hexadecimális számjeggyel. A szóköz bájtja például %20 formában jelenhet meg. Egy több bájtos UTF-8 betű több ilyen egységet kap. Az URI-szabvány az elválasztók és az adatként használt jelek kezelését is megkülönbözteti.

Az átalakított rész hosszát egy konkrét kódolási szabálynál így számolhatod:

Kimeneti karakterszám = változatlanul hagyott ASCII-bájtok + 3 × kódolt bájtok.

Ez a méretképlet az elkészült paraméterértékre érvényes. A mező neve, az egyenlőségjel és a cím többi része ezen felül jelenik meg.

Szemléltető példa magyar keresőkifejezéssel

Legyen az adat: „könyv & ár”. Láthatóan tíz karakterből áll, a két szóközt is beleszámítva. UTF-8-ban tizenkét bájt hosszú, mert az ö és az á két-két bájtos. Az ékezetes betűk bájthosszának hátterét az UTF-8 specifikáció írja le.

Ha a szóközöket %20 formában írjuk, a kódolt érték:

k%C3%B6nyv%20%26%20%C3%A1r

Öt bájt marad változatlanul: k, n, y, v és r. Hét bájtot kódolunk: a két ékezetes betű négy bájtját, a két szóközt és az & jelet. Az eredmény 5 + 3 × 7 = 26 karakter. A tizenkét bemeneti bájthoz képest ez 14 karakter többlet.

A különbség itt működési szempontból is számít. A keresőkifejezésben az & az adat része. Ha egy lekérdezésben kódolatlan elválasztóként szerepel, a fogadó alkalmazás külön paraméter kezdetének tekintheti. A URL kódoló és dekódoló segítségével a paraméterértéket alakítsd át, majd az URL-elemzőben ellenőrizd a kész cím részeit.

Szóköz és pluszjel

A webes űrlapok application/x-www-form-urlencoded alakjában a szóköz helyén pluszjel is állhat. Ebben a formátumban egy valódi pluszjelet külön kell kódolni. Ezt a saját szabályt a WHATWG URL-szabvány űrlapkódolási fejezete írja le.

Egy általános URL-komponens dekódolása és egy űrlapadat feldolgozása ezért eltérően bánhat ugyanazzal a pluszjellel. Ha egy terméknévben vagy keresőkifejezésben tényleges + szerepel, ellenőrizd a visszaalakított értéket is. A karakter szemre hasonló helyettesítése könnyen módosítja a keresést.

Hogyan ismered fel a kettős kódolást?

Egy már kódolt %20 rész újbóli kódolásakor a százalékjel is adattá válik. A jelölésből %2520 lehet: a %25 a százalékjel kódja, utána megmarad a 20. Az eredeti három karakterből így öt lesz.

Egyetlen visszafejtés ebből %20 szöveget ad. Még egy visszafejtés szóközt állíthat elő. A kettő közül a helyes eredményt az adat útja dönti el; az ismételt dekódolás találomra végrehajtva tényleges adatot is megváltoztathat. Az RFC 3986 ezért külön figyelmeztet az azonos szöveg ismételt kódolására és dekódolására.

Próbálj ki egy rövid, ismert értéket az éles adatfolyam előtt. Jegyezd fel a bemeneti szöveget, az egyszer kódolt alakot és a fogadó rendszerben megjelenő szöveget. Ha a három lépés követhető, a hosszú paraméterek hibája is gyorsabban behatárolható.

További cikkek

Kapcsolódó olvasnivalók

Gyorskereső

Kalkulátorok és útmutatók keresése

↑↓ választásEnter megnyitásEsc bezárás