URL-kódolás: mit jelent valójában a %20, a + és a %2F
A százalékos kódolás egy olyan karaktert, amelyet az URL nem tud biztonságosan hordozni, úgy ír le, hogy egy százalékjelet követ a bájtértéke hexadecimálisan. A szóköz %20 lesz, az és-jel %26, a perjel pedig %2F. A kódolás az URL szerkezetét védi, mert az olyan karakterek, mint a & és a =, választják el a lekérdezési karakterlánc részeit.
Melyik karakter maradhat változatlanul
Az URI-szabvány (RFC 3986), amelyre az URL-ek épülnek, néhány karaktert érintetlenül hagy: az A–Z és a–z betűket, a számjegyeket és a négy jelet: - _ . ~. Ezeket soha nem kell kódolni. A többi karakternek szerepe van az URL-ben. A kettőspont választja el a sémát a többitől, a perjel az útvonal részeit, a kérdőjel a lekérdezés kezdetét, a kettőskereszt a fragmentumot, az & és az = pedig a lekérdezést nevekre és értékekre bontja. Azt a karaktert, amelynek szerepe van, kódolni kell, ha adatként akarod használni, nem szerkezetként.
Ezért ugyanaz a karakter az egyik helyen kódolandó, a másikon nem. Egy lekérdezési értékben az és-jelet %26-nek kell írni, különben rosszul darabolódik a link. Egy link útvonalában viszont egyszerűen csak karakter.
Nem angol betűk
Az alap angol ábécén kívüli betűket UTF-8 bájtjaikként kódoljuk, és minden bájtot százalékkódként írunk le. A café szó é betűje a C3 és A9 két bájt, ezért %C3%A9 lesz, az egész szó pedig caf%C3%A9.
Egy egyszerű példa teszi konkréttá a szabályokat. A a b&c=d/é szöveg komponensként kódolva a%20b%26c%3Dd%2F%C3%A9 lesz. Minden karaktert kódolni kell, amely nem biztonságos betű, számjegy vagy jel: a szóközt, az és-jelet, az egyenlőségjelet, a perjelt és az ékezetes betűt.
Komponens vagy teljes URL
Azért van kétféle kódolás, mert más-más a célja. A komponens kódolás minden fenntartott karaktert adatként kezel. Egyetlen értékhez használd, például keresőszóhoz vagy fájlnévhez egy linken belül. A „rock & roll” keresőszóként kódolva rock%20%26%20roll lesz, így az és-jel az értéken belül marad.
A teljes URL-kódolás megtartja a szerkezetet. A https://example.com/a b kódolása https://example.com/a%20b lesz, a perjelek és a kettőspont érintetlen marad. Ezt egy teljes, érvénytelen címhez használd, amelyet érvényessé kell tenni, ne olyan értékhez, amely egy linken belül szerepel.
Ezért van az URL-eszköznek két beállítása: Komponens és Teljes URL. A teljes URL-dekódolás a %26 és %3D típusú, kódolt szerkezeti karaktereket is megtartja, így a link dekódolás után is működik.
Pluszjelek és űrlapadatok
A webes űrlapok másik szabályt használnak. Amikor egy űrlap űrlapadatként küldődik el, a szóközt + jelöli, nem %20. Egy szó szerinti pluszjelet ilyenkor %2B ír le. Így a „C++ tips” kifejezés űrlapadatban C%2B%2B+tips, sima komponenskódolásban pedig C%2B%2B%20tips lesz.
A dekódolás ugyanígy különbözik. Lekérdezési karakterláncban a + általában szóközt jelent. Egy link útvonalában a + pluszjel. Az eszköz csak akkor olvassa a + jelet szóköznek, ha be van pipálva a + használata szóközként (űrlapadatok) opció, ezért útvonalaknál és olyan értékeknél, ahol a pluszjel valódi, hagyd ki.
Hosszú lekérdezési karakterlánc olvasása
A link gyakran a kérdőjel után hordozza a beállításait. Vegyünk egy példát:
https://shop.example/search?q=red%20shirt&size=M&tag=summer%2Bsale
Dekódolva ez azt mondja, hogy a keresés piros póló, a méret M, a címke pedig summer+sale. A %2B azért marad pluszjel, mert kódolva volt. Illeszd be a linket az URL-eszközbe, és dekódolás után minden nevet és értéket felsorol, így a hosszú link könnyen olvashatóvá válik. Ha csak a rövidebb címet szeretnéd, követési beállítások nélkül, előbb tisztítsd meg a linket.
Kétszeres kódolás
A leggyakoribb hiba, hogy egy értéket kétszer kódolsz. A %20 szöveg újrakódolása %2520-at ad, mert maga a százalékjel is kódolódik, %25-ként. Az oldal ekkor szó szerinti %20-t keres az értékben, és a keresés vagy az oldal nem talál egyezést. Dekódold egyszer a linket, ellenőrizd az eredményt, és kódolj csak akkor, ha szükséges.
Hibás escape-ek
Egy százalékjel után pontosan két hexadecimális számjegynek kell állnia, az ékezetes betűknél pedig a számjegyeknek érvényes UTF-8-at kell alkotniuk. Egy félbevágott link, vagy egy szövegbe véletlenül beírt százalékjel hibás escape-et hagyhat, például %E0%A4%A-t. Az eszköz azt dekódolja, amit tud, a hibás bájtokat pontosan úgy hagyja, ahogy vannak, és jelzi, hány bájtot nem tudott dekódolni. Nem áll meg az első hibánál.
Szélső esetek
- Kézzel gépelt szóközök egy linkben. A böngésző címsora magától kódolja a szóközöket, de a dokumentumba másolt link még tartalmazhat nyers szóközöket. Kódold őket, mielőtt továbbküldöd a linket.
- Nem angol tartománynevek. Ezek külön rendszert, a punycode-ot használják, és az útvonal vagy a lekérdezés kódolása nem változtatja meg a gépnevet.
- Félbevágott emoji. Egy sérült másolat egyetlen surrogate-felet hagyhat, amely nem kódolható. Az eszköz ezt pótjellel helyettesíti, és jelzi, hogy ezt tette.
- Base64 linkekben. A linkben szereplő Base64-érték a saját szabályait követi, a + és a / helyett - és _ áll benne. Lásd: Base64 magyarázata.
Hogyan csináld a fixmint-tel
- Illeszd be a szöveget vagy a linket a Szöveg vagy URL mezőbe.
- Válaszd a Kódolás vagy a Dekódolás lehetőséget, majd a Komponens opciót egyetlen értékhez, vagy a Teljes URL opciót egy teljes címhez.
- Pipáld be a + használata szóközként (űrlapadatok) opciót a webes űrlapról másolt linkeknél.
- Linknél a Lekérdezési paraméterek, dekódolva részben látod az egyes neveket és értékeket.
- Másold ki az eredményt.
Gyors válaszok
Mit jelent a %20?
Egy szóközt. Bájtértéke hexadecimálisan 20.
Miért van a linkemben + jel %20 helyett?
A link valószínűleg webes űrlapról származik, ahol a + szóközt jelent. A „+ használata szóközként (űrlapadatok)” opció dekódolja.
Miért látom a %2520 jelölést a linkemben?
Az érték kétszer lett kódolva. A %20 százalékjelét újra kódolták, %25-ként. Egyszer dekódolva visszakapod a %20-at, másodszor a szóközt.
A Angol eredeti alapján, MI segítségével fordítva.
Hozzászólások
Még nincs hozzászólás. Legyél te az első.


