Kodowanie adresów URL

Niektóre znaki nie mogą być częścią adresu URL (np. spacją), a inne mają w adresie URL specjalne znaczenie. W formularzach HTML znak = służy do oddzielania nazwy od wartości. W przypadku ogólnej składni URI stosowane jest kodowanie adresów URL, aby rozwiązać ten problem, natomiast formularze HTML zawierają dodatkowe zastąpienia zamiast kodowania procentowego w przypadku wszystkich takich znaków.

Na przykład spacje w ciągu są zakodowane za pomocą %20 lub zastępowane znakiem plusa (+). Jeśli jako separatora używasz pionowej kreski (|), pamiętaj, by zakodować ją jako %7C. Przecinek w ciągu znaków powinien być zakodowany jako %2C.

Do automatycznego kodowania adresów URL zalecamy używanie zwykłych bibliotek do tworzenia adresów URL dostępnych na Twojej platformie. Zapewni to prawidłowe kody zmiany znaczenia adresów na Twojej platformie.

Tworzenie prawidłowego adresu URL

Może Ci się wydawać, że „prawidłowy” adres URL jest oczywisty, ale to nieprawda. Na przykład adres URL wpisany w pasku adresu w przeglądarce może zawierać znaki specjalne (np."上海+中國"). Przed transmisją przeglądarka musi wewnętrznie przetłumaczyć te znaki na inne kodowanie. Zgodnie z tym samym tokenem każdy kod, który generuje lub akceptuje dane wejściowe UTF-8, może traktować adresy URL ze znakami UTF-8 jako „prawidłowe”, ale musiałby również je przetłumaczyć przed wysłaniem ich na serwer WWW. Ten proces nazywamy kodowaniem adresów URL, czyli kodowaniem procentowym.

Znaki specjalne

Musimy tłumaczyć znaki specjalne, ponieważ wszystkie adresy URL muszą spełniać wymagania opisane w specyfikacji identyfikatora URI (Uniform Resource Identifier). Oznacza to, że adresy URL mogą zawierać tylko specjalny podzbiór znaków ASCII: znane symbole alfanumeryczne i niektóre znaki zarezerwowane do wykorzystania jako znaki kontrolne w adresach URL. Tabela zawiera podsumowanie tych znaków:

Podsumowanie prawidłowych znaków adresu URL
UstawpostacieUżycie adresu URL
Alfanumeryczne a b c d e f g h i j k l m Ciągi tekstowe, wykorzystanie schematu (http), port (8080) itp.
Niezarezerwowane - _ . ~ Ciągi tekstowe
Zarezerwowano ! * ' ( ) ; : @ & = + $ , / ? % # [ ] Znaki kontrolne lub ciągi tekstowe

Podczas tworzenia prawidłowego adresu URL musisz upewnić się, że zawiera on tylko znaki podane w tabeli Podsumowanie prawidłowych znaków adresu URL. Skonfigurowanie adresu URL tak, aby używał takiego zestawu znaków, zwykle skutkuje 2 problemami: pominięciem i zastąpieniem:

  • Znaki, które chcesz obsługiwać, znajdują się poza powyższym zestawem. Na przykład znaki w innych językach, takich jak 上海+中國, muszą być zakodowane przy użyciu podanych wyżej znaków. Zgodnie z popularną konwencją spacje (niedozwolone w adresach URL) często są przedstawiane za pomocą znaku plusa '+'.
  • Znaki w powyższym zestawie występują jako znaki zastrzeżone, ale muszą być używane dosłownie. Na przykład ? jest używany w adresach URL do wskazywania początku ciągu zapytania. Jeśli chcesz użyć ciągu znaków „?” i „tajemnic”, musisz zakodować znak '?'.

Wszystkie znaki do kodowania URL są kodowane za pomocą znaku '%' i dwuznakowej wartości szesnastkowej odpowiadającej ich znakowi UTF-8. Na przykład kod 上海+中國 w formacie UTF-8 byłby zakodowany w adresie URL jako %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B. Ciąg ? and the Mysterians byłby zakodowany w adresie URL jako %3F+and+the+Mysterians lub %3F%20and%20the%20Mysterians.

Typowe znaki, które wymagają kodowania

Oto kilka typowych znaków, które muszą być zakodowane:

Niebezpieczna postać Zakodowana wartość
Miejsce %20
%22
< %3C
> %3E
# %23
% %25
| %7C

Konwersja adresu URL otrzymanego z danych wejściowych użytkownika bywa czasem skomplikowana. Użytkownik może na przykład wprowadzić adres „ul. Główna 5" Ogólnie adres URL należy tworzyć z części, a wszelkie dane wpisane przez użytkownika traktuj jak znaki.

Poza tym adresy URL we wszystkich usługach internetowych Google Maps Platform i statycznych internetowych interfejsach API mogą mieć maksymalnie 16 384 znaki. W większości usług limit znaków będzie rzadko osiągany. Pamiętaj jednak, że niektóre usługi mają kilka parametrów, które mogą powodować powstawanie długich adresów URL.