URL kódolás és dekódolás
Alakítsa a szöveget URL-be biztonságosan beilleszthető formára, vagy a %20-hoz hasonló sorozatokat alakítsa vissza olvasható karakterekké. Az eszköz a böngésző saját encodeURIComponent, encodeURI és decodeURIComponent függvényeit használja, a lekérdezési paramétereket táblázatban mutatja, és semmit sem küld szerverre.
0 karakter · 0 szó · 0 sor
0 karakter · 0 szó · 0 sor
Teljes egészében ebben a böngészőlapon fut. A szöveget soha nem töltjük fel és nem tároljuk.
Mit kódol az egyes függvény
A böngésző saját függvényeivel számolva. Az encodeURIComponent a betűket, számjegyeket és ezeket a jeleket hagyja érintetlenül: ! ' ( ) * - . _ ~
| Karakter | encodeURIComponent | encodeURI |
|---|---|---|
(szóköz) | %20 | %20 |
! | ! | ! |
" | %22 | %22 |
# | %23 | # |
$ | %24 | $ |
% | %25 | %25 |
& | %26 | & |
' | ' | ' |
( | ( | ( |
) | ) | ) |
* | * | * |
+ | %2B | + |
, | %2C | , |
/ | %2F | / |
: | %3A | : |
; | %3B | ; |
= | %3D | = |
? | %3F | ? |
@ | %40 | @ |
[ | %5B | %5B |
] | %5D | %5D |
{ | %7B | %7B |
} | %7D | %7D |
| | %7C | %7C |
\ | %5C | %5C |
^ | %5E | %5E |
` | %60 | %60 |
< | %3C | %3C |
> | %3E | %3E |
~ | ~ | ~ |
- | - | - |
_ | _ | _ |
. | . | . |
é | %C3%A9 | %C3%A9 |
€ | %E2%82%AC | %E2%82%AC |
😀 | %F0%9F%98%80 | %F0%9F%98%80 |
Százalékos kódolás és az RFC 3986 fenntartott karakterei
Az URL csak az ASCII karakterek korlátozott körét tartalmazhatja. Az URI-szintaxis 2005-ös specifikációja, az RFC 3986 ezeket két csoportra osztja. A nem fenntartott karaktereket (A–Z, a–z, 0–9 és a négy jel: - . _ ~) soha nem kell kódolni. A fenntartott karaktereknek szerepük van: az általános elválasztók (: / ? # [ ] @) választják el a sémát, a gazdagépet, az útvonalat, a lekérdezést és a töredéket, az al-elválasztók (! $ & ' ( ) * + , ; =) pedig az ezeken belüli elemeket, ahogy az & és az = teszi a lekérdezési karakterláncban. Minden más karaktert, és minden fenntartott karaktert, amelyet egyszerű adatként használunk, százalékkódolni kell.
A százalékkódolás egy bájtot %-ként ír le, utána két hexadecimális számjeggyel. A szöveget előbb UTF-8-ra alakítja, így a szóköz %20 lesz, az é (két bájt) %C3%A9, egy emoji pedig négy %XX csoport. Ezért kerül a „café & bar” keresés a linkbe így: caf%C3%A9%20%26%20bar. Az & kódolva van, hogy a szerver ne új paraméter kezdetének olvassa.
encodeURIComponent, encodeURI és a dekódolás
Az encodeURIComponent egyetlen darabhoz való, például lekérdezési értékhez, útvonalszakaszhoz vagy paraméterként átadott átirányítási URL-hez. Mindent kódol, kivéve a nem fenntartott karaktereket és a ! ' ( ) * jeleket, amelyeket a JavaScript történelmi okokból érintetlenül hagy. Az encodeURI (teljes URL) feltételezi, hogy a bemenet már teljes cím, ezért a fenntartott karaktereket megtartja, így a https://example.com/a b?q=1 címben csak a szóköz lesz kódolva. Az encodeURI használata paraméterértéken klasszikus hiba: az értékben lévő & vagy # megmarad, és elrontja az URL-t.
A Dekódolás mindkét függvényt visszafordítja. A GET módszerrel küldött HTML-űrlapok a régebbi application/x-www-form-urlencoded formátumot használják, ahol a szóközt %20 helyett + jelöli; ezeknél hagyja bejelölve a A + jel szóköznek számít beállítást, és vegye ki a jelölést, ha a plusz jel szó szerint számít, például telefonszámnál. Ha a bemenetben olyan % szerepel, amely után nem két hexadecimális számjegy áll, vagy érvénytelen UTF-8 bájtok vannak, a dekódolás találgatás helyett egyértelmű hibaüzenettel leáll. Ha a szöveg lekérdezési karakterláncot tartalmaz, a paraméterei dekódolva, táblázatban jelennek meg az eszköz alatt. Bináris adatokhoz az URL-ekben általában a Base64url a megfelelő alternatíva.
Gyakori kérdések
- A szóköz az URL-ben %20 vagy pluszjel legyen?
- Útvonalakban és az RFC 3986 szerint a szóköz %20. A + jel csak a HTML-űrlapok módján kódolt lekérdezési karakterláncokban jelent szóközt, ezért a %20 mindenhol biztonságos választás.
- Miért került %2520 az URL-embe?
- Kétszer lett kódolva. Az első menet a szóközt %20-ra alakította, a második magát a %-jelet kódolta %25-té. Egyszer dekódolva megszűnik a felesleges réteg; az értékeket a kódban csak egy ponton kódolja.
- Mely karaktereket nem kell soha százalékosan kódolni?
- Az RFC 3986 nem fenntartott karakterei: az A–Z betűk kis- és nagybetűvel, a 0–9 számjegyek, valamint a kötőjel, a pont, az alsó vonal és a hullámvonal.
- Tartalmazhat egy URL ékezetes vagy nem latin betűket kódolás nélkül?
- A böngészők megjelenítik őket, de a hálózaton az útvonalban vagy lekérdezésben lévő minden nem ASCII karakter százalékkódolt UTF-8-ként megy át. A tartománynevek külön rendszert, Punycode-ot használnak, amely xn-- címkékké alakítja őket.
- Miért jelez hibás sorozatot a dekódolás?
- A szövegben olyan % van, amely után nem két hexadecimális számjegy áll, például egy szó szerinti „100%”, vagy a bájtok érvénytelen UTF-8-ként dekódolódnak. A magányos %-jeleket dekódolás előtt kódolja %25-té.