Kodowanie adresów URL

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Niektóre znaki nie mogą być częścią adresu URL (np. spacja) lub niektóre znaki mają specjalne znaczenie w adresie URL. W formularzach HTML znak = służy do oddzielania nazwy od wartości. Aby rozwiązać ten problem, ogólna składnia identyfikatora URI używa kodowania URL-i, a formularze HTML stanowią dodatkowe zamienniki, zamiast stosować kodowanie procentowe dla wszystkich takich znaków.

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

Zalecamy używanie standardowych bibliotek do tworzenia adresów URL platform do automatycznego kodowania adresów URL, aby zapewnić prawidłową zmianę znaczenia adresów URL na platformie.

Tworzenie prawidłowego adresu URL

Może Ci się wydawać, że URL jest prawidłowy, ale nie do końca. Adres URL wpisany na pasku adresu w przeglądarce może na przykład zawierać znaki specjalne (np."上海+中國"). Przeglądarka musi we własnym zakresie przetłumaczyć te znaki na inne kodowanie. Na podstawie tego samego tokena każdy kod, który generuje lub akceptuje dane wejściowe UTF-8, może traktować adresy URL ze znakami UTF-8 jako „"valid"”, ale musi też tłumaczyć te znaki przed wysłaniem ich na serwer WWW. Ten proces jest nazywany kodowaniem adresów URL lub kodowaniem procentowym.

Znaki specjalne

Musimy przetłumaczyć znaki specjalne, ponieważ wszystkie adresy URL muszą być zgodne ze składnią podaną w specyfikacji Jednolitego identyfikatora zasobu (URI). Oznacza to, że adresy URL mogą zawierać tylko specjalny podzbiór znaków ASCII: znane symbole alfanumeryczne i niektóre zarezerwowane znaki do wykorzystania jako znaki kontrolne w adresach URL. Ta tabela zawiera podsumowanie tych znaków:

Podsumowanie prawidłowych znaków adresu URL
UstawznakuWykorzystanie adresu URL
Znaki alfanumeryczne A b k d e g g h j k l l m z p o Ciągi tekstowe, wykorzystanie schematu (http), port (8080) itd.
Niezarezerwowane – _ . ~ Ciągi tekstowe
Zarezerwowane ! * ' ( ) ; : @ & = + $ , / ? % # [ ] Steruj znakami lub ciągami tekstowymi

Podczas tworzenia prawidłowego adresu URL upewnij się, że zawiera on tylko te znaki z tabeli Podsumowanie prawidłowych znaków adresu URL. Wprowadzenie tego zestawu znaków w adresie URL zazwyczaj powoduje 2 problemy – pominięcie lub pominięcie:

  • Znaki, które chcesz obsługiwać, istnieją poza powyższym zestawem. Na przykład znaki w językach obcych, takie jak 上海+中國, muszą być zakodowane przy użyciu powyższych znaków. Zgodnie z obowiązującą konwencją spacje (niedozwolone w adresach URL) są często reprezentowane przez znak '+'.
  • Znaki wchodzące w skład powyższych znaków są zastrzeżone, ale trzeba ich używać dosłownie. Na przykład dyrektywa ? jest używana w adresach URL do wskazania początku ciągu zapytania. Jeśli chcesz użyć ciągu znaków „Tajemnice” i „Tajemnice”, musisz zakodować znak '?'.

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

Typowe znaki, które wymagają kodowania

Typowe znaki, które należy zakodować:

Niebezpieczny znak Wartość zakodowana
Spacja %20
" %22
< %3C
> %3E
# %23
% %25
| %7C

Konwertowanie adresu URL otrzymanego z danych wejściowych użytkownika może być trudne. Na przykład użytkownik może wpisać adres w ciągu „ "5th&Main St." Adres URL należy zwykle tworzyć z jego części, traktując dane wejściowe użytkownika jako znaki literału.

Adresy URL mogą zawierać maksymalnie 8192 znaki we wszystkich usługach internetowych Google Maps Platform i w statycznych interfejsach API. W przypadku większości usług limit znaków jest rzadko osiągany. Pamiętaj jednak, że niektóre usługi mają kilka parametrów, które mogą prowadzić do długiego adresu URL.