About URL Encoding
Kodowanie URL, znane również jako kodowanie procentowe, to mechanizm kodowania informacji w Uniform Resource Identifier (URI). Służy do konwersji znaków niedozwolonych w adresie URL na format, który może być przesyłany przez Internet. To kodowanie zastępuje niebezpieczne znaki ASCII znakiem "%" po którym następują dwie cyfry szesnastkowe.
Typowe zastosowania kodowania URL
- Formatowanie ciągów zapytań w adresach URL
- Wysyłanie danych formularza za pomocą żądań HTTP (application/x-www-form-urlencoded)
- Tworzenie poprawnych adresów URL ze znakami specjalnymi lub spacjami
- Kodowanie znaków nie-ASCII w adresach URL
- Przekazywanie złożonych parametrów w API i usługach sieciowych
Jak działa kodowanie URL
Kodowanie URL opiera się na następujących zasadach:
- Znaki alfanumeryczne (A-Z, a-z, 0-9) pozostają niezmienione
- Znaki specjalne takie jak spacja, ?, &, =, %, + są zamieniane na ich odpowiedniki zakodowane procentowo
- Każdy bajt znaku zakodowanego w UTF-8 jest kodowany procentowo osobno
- Znak spacji może być kodowany jako "%20" lub "+" (w parametrach zapytania)
- Znaki zastrzeżone takie jak /, :, ?, #, [ mają specjalne znaczenie w adresach URL i mogą być traktowane inaczej w zależności od kontekstu
encodeURI vs encodeURIComponent
JavaScript udostępnia dwie funkcje do kodowania URL:
- encodeURI: Koduje cały URI, zachowując znaki będące częścią składni URI (takie jak /:?#[]@!$&'()*+,;=)
- encodeURIComponent: Koduje komponent URI (np. wartość parametru zapytania), kodując więcej znaków, w tym tych o specjalnym znaczeniu w URI
W większości przypadków podczas kodowania danych wprowadzanych przez użytkownika lub parametrów zapytania, encodeURIComponent()
jest bezpieczniejszą opcją, ponieważ zapewnia prawidłowe kodowanie wszystkich potencjalnie problematycznych znaków.
Kodowanie URL dla znaków międzynarodowych
Nowoczesne przeglądarki kodują znaki nie-ASCII za pomocą kodowania UTF-8, a następnie kodują procentowo każdy bajt. Zapewnia to prawidłowe uwzględnienie znaków międzynarodowych, emoji i innych symboli Unicode w adresach URL. Na przykład japoński znak "日" jest najpierw kodowany w UTF-8 jako trzy bajty (E6 97 A5), a następnie kodowany procentowo jako "%E6%97%A5".
Examples
Tekst zwykły | Zakodowany URL |
---|---|
Witaj świecie | Hello%20World |
https://example.com/?q=search term | https%3A%2F%2Fexample.com%2F%3Fq%3Dsearch%20term |
Wyprzedaż 50% taniej! | 50%25%20off%20sale%21 |
Smith & Jones LLC | Smith%20%26%20Jones%20LLC |