Ugrás a tartalomra

URL Kódoló: Speciális karakterek URL-ben történő kódolása online, ingyenesen

Ingyenes URL karakterlánc kódoló eszköz speciális karakterek azonnali kódolásához. Szóközök, Unicode és szimbólumok átalakítása százalékos kódolt formátumba. Tökéletes API-khoz, webesűrlapokhoz és nemzetközi URL-ekhez. Próbálja ki most!

URL Karakterlánc Escape-elő

Betöltési kalkulátor...
📚

Dokumentáció

URL-kódolás: mi ez, és hogyan működik

Az URL-kódolás, más néven százalékos kódolás, a webcímekben szereplő karakterek ábrázolására szolgáló módszer, amely csak a biztonságos ASCII-karakterek egy kis készletét használja. Ennek során a nem biztonságos karaktert egy % jelre és az azt követő két hexadecimális számjegyre cseréli. Ez az URL-karakterlánc-escape-eszköz ugyanúgy kódolja a szöveget, mint a JavaScript beépített encodeURIComponent függvénye.

Miért kell kódolni az URL-eket?

Egy URL csak korlátozott karakterkészletet tartalmazhat: betűket, számjegyeket és néhány írásjelet. A szóközök, az ékezetes betűk, a nem latin ábécék karakterei, valamint az olyan szimbólumok, mint a & vagy a =, kódolatlanul szerepelve hibássá tehetik az URL-t, vagy megváltoztathatják a jelentését. Egy hivatkozásban lévő szóköz például azt okozhatja, hogy a böngésző vagy a szerver két különálló részként értelmezi az URL-t. A százalékos kódolás ezeket a karaktereket olyan kódra cseréli, amelyet minden böngésző és szerver azonos módon tud olvasni.

Karakterek, amelyeket ez az eszköz változatlanul hagy

Ez az eszköz soha nem módosítja az alábbi karaktereket. Változatlanul haladnak át:

  • Nagy- és kisbetűk: A–Z, a–z
  • Számjegyek: 0–9
  • Az - . _ ~ ! * ' ( ) írásjelek

Minden más karakter százalékosan kódolódik, többek között:

  • A szóköz karaktere, valamint az olyan írásjelek, mint a : / ? # [ ] @ $ & + , ; =
  • Az ékezetes betűk és minden más nem ASCII-karakter, illetve Unicode-karakter
  • Maga a % karakter is, amely mindig %25 értékké válik, még akkor is, ha már egy százalékosan kódolt sorozat része volt

Az URL-szintaxisról szóló általános útmutatók némelyike a ! * ' ( és ) karaktert más írásjelekkel együtt olyan karakterként sorolja fel, amelyet bizonyos környezetekben „szükség lehet kódolni”. Ez a konkrét eszköz nem kódolja őket, mert az encodeURIComponent szabálykészletét követi, amely ezeket biztonságosnak tekinti.

Százalékosan kódolt karakterlánc kiszámítása (képlet)

Az eszköz egyenként ellenőrzi a bemenet minden karakterét, és a következő szabályt alkalmazza:

  1. Ha a karakter a fent felsorolt változatlan karakterek egyike, változatlanul hagyja.
  2. Egyébként a karaktert UTF-8 bájtsorozattá alakítja. Az ékezetes latin betűk, valamint a görög, cirill és arab betűk két bájtot használnak. A kínai, japán és koreai karakterek három bájtot használnak. Az emojik négy bájtot használnak.
  3. Minden bájtot kétjegyű hexadecimális számként ír le.
  4. Minden hexadecimális pár elé egy % jelet tesz.
  5. Az eredményeket sorrendben összefűzi, így létrejön a kódolt karakterlánc.

Kidolgozott példa

Bemenet: Jürgen & Björk

Feldolgozás karakterenként:

KarakterEredmény
JJ (változatlan)
ü%C3%BC (UTF-8 bájtok: 0xC3, 0xBC)
rgenrgen (változatlan)
(szóköz)%20
&%26
(szóköz)%20
BjBj (változatlan)
ö%C3%B6 (UTF-8 bájtok: 0xC3, 0xB6)
rkrk (változatlan)

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

Egy második példa szemlélteti a változatlanul hagyott karakterek készletének működését. A -_.!~*'() karakterlánc kódolásakor -_.!~*'() keletkezik, vagyis pontosan ugyanaz a szöveg, mert minden karaktere a nem fenntartott karakterek közé tartozik. A 100% karakterlánc kódolásakor 100%25 keletkezik, mert maga a % jel nem biztonságos karakter.

Százalékosan kódolt karakterlánc dekódolása

A dekódolás megfordítja ezt a folyamatot: minden %XX sorozatot hexadecimális bájtként olvas be, a bájtokat újra az eredeti UTF-8 karakterré csoportosítja, majd a karakterrel helyettesíti a sorozatot. Például a %C3%BC visszafejtése ü karaktert eredményez, a %20 pedig szóközzé dekódolódik. Ez az eszköz csak kódol; a folyamat megfordításához külön dekódoló szükséges.

Gyakori alkalmazások

A százalékos kódolást akkor használják, amikor egy személy által beírt, nem pedig programozó által írt szöveget kell egy URL részévé tenni:

  • Olyan keresőmezők, amelyek a keresőkifejezést a címsorba helyezik, például: ?q=shoes%20%26%20bags
  • Neveket, címeket vagy más felhasználói adatokat továbbító lekérdezési paraméterek
  • Olyan oldalakra mutató hivatkozások, amelyek címe ékezetes betűket vagy nem latin írásrendszert használó nyelven szerepel
  • Olyan API-kérések, amelyek tokeneket vagy azonosítókat adnak át az URL részeként

Kódpéldák

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

A Python quote függvénye mindig változatlanul hagyja a betűket, a számjegyeket, valamint a - . _ ~ karaktereket. Az öt további karaktert, a ! * ' ( ) jelet fel kell venni a safe paraméterbe, hogy megfeleljen ennek az eszköznek. Nélkülük a quote ehelyett a következőket adja vissza: %21 %2A %27 %28 %29.

Története

A nem biztonságos karakterek URL-ben történő kódolásának gondolata az RFC 1738 dokumentumig nyúlik vissza, amely (4410 cm) 1994-ben az URL-formátumot elsőként meghatározó dokumentumok egyike volt. A 3986 számú RFC, amely 2005-ben jelent meg, frissítette a szabályokat, és formálisan meghatározta a „nem fenntartott” karakterek készletét, amelyek kódolását soha nem szükséges elvégezni. A encodeURIComponent, vagyis az az eszköz alapjául szolgáló JavaScript-függvény, az RFC 3986 szabványénál kissé bővebb nem fenntartott karakterkészletet követ: kódolatlanul hagyja a ! * ' ( és ) karaktert is, egy URI-specifikáció korábbi változatának megfelelően.

Gyakran ismételt kérdések

Mi a különbség az URL-kódolás és az URL-escape-elés között? Ugyanazt jelentik. Mindkét kifejezés a százalékos kódolást jelöli, amelynek során egy karaktert a % jel és két hexadecimális számjegy helyettesít.

Miért marad változatlan a !, *, ', ( és ) karakter ebben az eszközben? Ez az eszköz az encodeURIComponent függvényt használja, amely ezt az öt karaktert biztonságosnak tekinti, és pontosan a begépelt formában hagyja őket. Más kódolófüggvények és egyes szerverek továbbra is elvárhatják a kódolásukat, ezért ha ez problémát okoz, ellenőrizni kell a célrendszert.

Mi a különbség a szóközt jelölő %20 és + között? Mindkettő szóközt jelöl. A %20 a szóköz általános százalékos kódolása. A + jel csak az application/x-www-form-urlencoded adatokban használt speciális eset; ez a HTML-űrlapok elküldésekor használt formátum, nem pedig ennek az eszköznek a formátuma.

Dekódolja ez az eszköz a már kódolt szöveget? Nem. Csak kódol. Ha a bemenet már tartalmaz egy % jelet, akkor ez a % literális karakternek minősül, és a kimenetben %25 értékké válik, ahelyett hogy változatlanul maradna.

Hogyan kezeli az eszköz a nem latin karaktereket, például a kínai vagy arab szöveget? Minden karaktert először a hozzá tartozó UTF-8 bájtsorozattá alakít, majd minden bájtot százalékosan kódol. Egy kínai karakter három bájtot használ, ezért három %XX csoportot eredményez. Egy arab betű két bájtot használ, ezért kettőt eredményez.

Mikor tagadja meg az eszköz a szöveg kódolását? Csak akkor, ha a szöveg egy helyettesítőpár felét tartalmazza. A helyettesítőpár egy két részből álló kód, amely az U+FFFF fölötti karaktereket, például egy emojit tárol. Egy önálló félnek nincs érvényes UTF-8-formája, ezért az eszköz eredmény helyett hibát jelez. Normál gépeléssel ilyen nem hozható létre; rendszerint csonka másolásból vagy hibás hivatkozásból származik.

A teljes URL-t kell kódolni, vagy csak egy részét? Csak a felhasználói adatokat tartalmazó részeket kell kódolni, például a lekérdezési értékeket vagy az útvonalszegmenseket, nem pedig az URL szerkezetét alkotó részeket, például a https:// előtagot és a tartománynevet. A teljes URL komponenskódolóval történő kódolása a :, / és ? karaktereket is százalékos kódokká alakítaná, így a cím hibássá válna.

Hivatkozások

  1. RFC 3986 — Uniform Resource Identifier (URI): általános szintaxis
  2. Százalékos kódolás — Wikipédia
  3. MDN — encodeURIComponent()
  4. URL Standard — WHATWG