Kodowanie URL-i

Niektórych znaków (np. spacji) nie można używać w adresach URL, a inne mają w nich specjalne znaczenie. W formularzach HTML znak = służy do rozdzielania nazwy od wartości. Zwykła składnia identyfikatora URI używa kodowania adresów URL, aby rozwiązać ten problem, a formularze HTML wprowadzają dodatkowe zamiany, zamiast kodować wszystkie takie znaki za pomocą kodowania procentowego.

Na przykład spacje w ciągu są kodowane za pomocą znaku %20 lub zastępowane znakiem plusa (+). Jeśli używasz znaku ukośnika (|) jako separatora, koduj go jako %7C. przecinek w ciągu powinien być zakodowany jako %2C.

Zalecamy używanie standardowych bibliotek tworzenia adresów URL na platformie do automatycznego kodowania adresów URL, aby mieć pewność, że są one prawidłowo zakodowane pod kątem Twojej platformy.

Tworzenie prawidłowego adresu URL

Możesz sądzić, że „prawidłowy” adres URL jest oczywisty, ale tak nie jest. Adres URL wpisany na pasku adresu w przeglądarce może na przykład zawierać znaki specjalne (np."上海+中國"). Przed przesłaniem przeglądarka musi przetłumaczyć te znaki na inne kodowanie. Z tego samego powodu każdy kod, który generuje lub akceptuje dane wejściowe w UTF-8, może traktować adresy URL zawierające znaki UTF-8 jako „prawidłowe”, ale musi też przetłumaczyć te znaki przed wysłaniem ich na serwer WWW. Ten proces nazywa się kodowaniem URL-a lub kodowaniem procentowym.

Znaki specjalne

Musimy przetłumaczyć znaki specjalne, ponieważ wszystkie adresy URL muszą być zgodne z syntaksą określoną w specyfikacji identyfikatora zasobów (URI). Oznacza to, że adresy URL mogą zawierać tylko specjalny podzbiór znaków ASCII: znane symbole alfabetyczne oraz niektóre znaki zarezerwowane do użycia jako znaki kontrolne w adresach URL. W tej tabeli znajdziesz te znaki:

Podsumowanie prawidłowych znaków w adresach URL
Do startuznakówUżycie 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 w 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 3 4 5 6 7 8 9 ciągi tekstowe, użycie schematu (http), port (8080) itp.
Niezarezerwowane - _ . ~ Teksty
Zarezerwowane ! * ' ( ) ; : @ & = + $ , / ? % # [ ] znaki sterujące lub ciągi tekstowe;

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

  • Znaki, które chcesz obsługiwać, znajdują się poza zestawem znaków wymienionych powyżej. Na przykład znaki w językach obcych, takie jak 上海+中國, należy zakodować za pomocą znaków wymienionych powyżej. Zgodnie z popularną konwencją spacje (które są niedozwolone w adresach URL) są często reprezentowane za pomocą znaku plusa '+'.
  • Znaki z powyższego zestawu są znakami zarezerwowanymi, 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 „? and the Mysterions”, musisz zakodować znak '?'.

Wszystkie znaki, które mają być zakodowane w formacie URL, są kodowane za pomocą znaku '%' i 2-znakowej wartości szesnastkowej odpowiadającej ich znakowi UTF-8. Na przykład 上海+中國 w UTF-8 zostanie zakodowane w formacie adresu URL jako %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B. Ciąg tekstowy ? and the Mysterians zostanie zakodowany w formacie URL jako %3F+and+the+Mysterians lub %3F%20and%20the%20Mysterians.

Typowe znaki wymagające kodowania

Oto kilka przykładów znaków, które muszą być zakodowane:

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

Konwertowanie adresu URL otrzymanego od użytkownika może być czasami trudne. Użytkownik może na przykład wpisać adres „5th&Main St.” Zasadniczo adres URL powinien być budowany z pojedynczych części, a wszystkie dane wejściowe użytkownika powinny być traktowane jako znaki dosłowne.

Dodatkowo w przypadku wszystkich usług internetowych i interfejsów API Map Google Platform długość adresów URL jest ograniczona do 16 384 znaków. W przypadku większości usług ten limit znaków jest rzadko osiągany. Pamiętaj jednak, że niektóre usługi mają kilka parametrów, które mogą powodować długie adresy URL.