Koder komponentu URI

Jeśli kiedykolwiek przekazałeś wartość taką jak name=John & Jane do adresu URL bez zakodowania jej, znasz ten ból: & jest odczytywany jako nowy parametr, a serwer widzi śmieci. To narzędzie koduje procentowo dowolny ciąg do bezpiecznego użycia jako komponent URI zgodnie z RFC 3986, zamieniając każdy zarezerwowany znak w parę %HH (spacje włącznie). Wklej fragment, wartość zapytania lub cel przekierowania i otrzymaj coś bezpiecznego do sklejenia w dowolnym adresie URL.

Jak zakodować komponent URI

  1. 1

    Wklej swoją wartość

    Wrzuć pojedynczą wartość parametru zapytania, segment ścieżki lub ciąg fragmentu.

  2. 2

    Wybierz kodowanie lub dekodowanie

    Przełącz kierunek, by zamienić escapy procentowe z powrotem na oryginalne znaki.

  3. 3

    Uruchom

    Narzędzie koduje każdy znak w UTF-8, a następnie zastępuje każdy zarezerwowany bajt przez %HH.

  4. 4

    Skopiuj wynik

    Wrzuć wynik bezpośrednio do swojego szablonu URL lub klienta API.

Co jest escapowane

Ten koder działa zgodnie z RFC 3986: nietknięty pozostaje tylko zestaw niezarezerwowany A-Z a-z 0-9 - _ . ~. Wszystko inne staje się procentowo zakodowanym UTF-8, w tym spacja i subdelimitery ! * ' ( ), które javascriptowy encodeURIComponent zostawiłby w spokoju.

Znak Kodowany jako
spacja %20
! %21
# %23
& %26
' %27
( %28
) %29
* %2A
+ %2B
/ %2F
= %3D
? %3F
é %C3%A9

Komponent a pełne URI

Ten koder jest surowszy niż encodeURI, który zostawia : / ? # [ ] @ ! $ & ' ( ) * + , ; = w spokoju, bo te znaki są strukturalne w adresie URL. Dla wartości, którą sklejasz w łańcuch zapytania, chcesz formy surowej, i dokładnie to daje to narzędzie: escapuje nawet ! ' ( ) *, idąc o krok dalej niż javascriptowy encodeURIComponent.

const url = `/search?q=${encodeURIComponent(userInput)}`;

Częste pułapki

  • Podwójne kodowanie: zakodowanie czegoś, co jest już zakodowane, daje %2520 zamiast %20. Zawsze najpierw dekoduj, jeśli nie masz pewności co do źródła.
  • Znaki plus w formularzach: wysyłka formularza HTML koduje spacje jako +, a nie %20. Dekodery, które ściśle stosują RFC 3986 (ten włącznie), nie zamienią + z powrotem na spację. Do takich przypadków użyj dekodera świadomego formularzy.
  • Separatory ścieżki: zakodowanie / zamienia je tutaj w %2F. Jeśli chcesz zachować prawdziwą strukturę ścieżki, najpierw połącz segmenty i zakoduj każdy osobno.

Najczęściej zadawane pytania

To kodowanie procentowe zgodne z RFC 3986, forma surowa. Escapuje :, /, ?, # i pozostałe znaki zarezerwowane (a także !, ', (, ) i *), bo komponent nie powinien nieść w sobie struktury URL. To czyni go surowszym niż javascriptowy encodeURIComponent i znacznie surowszym niż encodeURI.

%20 to sposób z RFC 3986. + na spację to spuścizna po kodowaniu treści application/x-www-form-urlencoded. Dla łańcuchów zapytań w adresach URL %20 jest zawsze bezpieczne; + jest oczekiwane na serwerze tylko wtedy, gdy powstało z formularza POST.

Każdy znak jest najpierw kodowany w UTF-8, a potem każdy bajt jest escapowany. Znak taki jak 日 staje się %E6%97%A5 (trzy bajty).

Nie. Wartość jest kodowana procentowo na serwerze, aby zbudować twój wynik, i nie jest przechowywana ani logowana; nic z tego, co wklejasz, nie jest zachowywane po wysłaniu odpowiedzi.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach