Kodowanie adresów URL

Niektóre znaki nie mogą być częścią adresu URL (np. spacja), a inne mają w adresie URL specjalne znaczenie. W formularzach HTML znak = służy do oddzielania nazwy od wartości. Ogólna składnia URI korzysta z kodowania adresów URL, aby rozwiązać ten problem. Z kolei formularze HTML wykonują dodatkowe zamienniki zamiast kodowania procentowego.

Na przykład spacje w ciągu są kodowane 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.

Zalecamy automatyczne kodowanie adresów URL za pomocą standardowych bibliotek do tworzenia adresów URL na Twojej platformie. Dzięki temu będziesz mieć pewność, że adresy URL będą prawidłowo zakodowane na potrzeby Twojej platformy.

Tworzenie prawidłowego adresu URL

Może Ci się wydawać, że „prawidłowy” adres URL jest oczywisty, ale nie do końca tak jest. Na przykład adres URL wpisany na pasku adresu w przeglądarce może zawierać znaki specjalne (np."上海+中國"). Przed przesłaniem przeglądarka musi wewnętrznie przetłumaczyć te znaki na inne kodowanie. Na podstawie tego samego tokena każdy kod generujący lub akceptujący dane wejściowe w formacie UTF-8 może traktować adresy URL ze znakami UTF-8 jako „prawidłowe”, ale przed wysłaniem ich na serwer WWW musi je przetłumaczyć. Nazywamy to kodowaniem adresów URL lub kodowaniem procentowym.

Znaki specjalne

Musimy tłumaczyć znaki specjalne, ponieważ wszystkie adresy URL muszą być zgodne ze składnią określoną w specyfikacji identyfikatora URI. Oznacza to, że adresy URL muszą zawierać wyłącznie specjalny podzbiór znaków ASCII: znane znaki alfanumeryczne i pewne znaki zastrzeżone, które mogą być używane jako znaki kontrolne w adresach URL. Podsumowanie tych znaków znajdziesz w tej tabeli:

Podsumowanie prawidłowych znaków w adresie URL
UstawpostacieWykorzystanie adresu URL
Znaki alfanumeryczne a b c d e f g h i j k l m n o p q r s t u v x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 9 4 5 6 7 8 Ciągi tekstowe, użycie schematu (http), port (8080) itp.
Niezarezerwowane - _ . ~ Ciągi tekstowe
Zarezerwowano ! * ' ( ) ; : @ & = + $ , / ? % [ ] Znaki sterujące i/lub ciągi tekstowe

Podczas tworzenia prawidłowego adresu URL musisz się upewnić, że zawiera on tylko znaki widoczne w tabeli Podsumowanie prawidłowych znaków adresu URL. Stworzenie adresu URL i wykorzystanie tego zestawu znaków prowadzi zazwyczaj do 2 problemów: pominięcia i zastąpienia:

  • Znaki, które chcesz obsługiwać, znajdują się poza powyższym zestawem. Na przykład znaki w językach obcych, takich jak 上海+中國, należy zakodować przy użyciu powyższych znaków. Zgodnie z powszechną konwencją spacje (które nie są dozwolone w adresach URL) są często również przedstawiane za pomocą znaku plusa '+'.
  • Znaki w powyższym zestawie stanowią znaki zastrzeżone, ale muszą być używane dosłownie. Na przykład znak ? jest używany w adresach URL do wskazywania początku ciągu zapytania. Jeśli chcesz użyć ciągu znaków „? oraz tajemnicy”, musisz zakodować znak '?'.

Wszystkie znaki przeznaczone do kodowania adresu URL są kodowane przy użyciu znaku '%' i dwuznakowej wartości szesnastkowej odpowiadającej ich znakowi UTF-8. Na przykład ciąg 上海+中國 w UTF-8 będzie zakodowany na potrzeby adresu URL jako %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B. Ciąg ? and the Mysterians będzie zakodowany na potrzeby adresu 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:

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

Konwersja adresu URL otrzymywanego na podstawie danych wejściowych użytkownika może być czasami trudna. Na przykład użytkownik może wpisać adres jako „ul. Piąta i Główna”. Ogólnie adres URL należy utworzyć z jego części, traktując wszelkie dane wejściowe użytkownika jako dosłowne znaki.

Dodatkowo w przypadku wszystkich usług internetowych Google Maps Platform i statycznych interfejsów API w internecie adresy URL mogą mieć maksymalnie 16 384 znaki. W przypadku większości usług ten limit znaków jest rzadki. Pamiętaj jednak, że niektóre usługi mają kilka parametrów, które mogą powodować tworzenie długich adresów URL.