Kodowanie URL-i

Niektóre znaki nie mogą być częścią adresu URL (np. spacja), a inne mają w nim specjalne znaczenie. W formularzach HTML znak = służy do oddzielania nazwy od wartości. Zwykle składnia URI używa kodowania adresów URL, aby rozwiązać ten problem, ale formularze HTML wprowadzają dodatkowe zamiany, zamiast kodowania procentowego wszystkich takich znaków.

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 znaków powinien być zakodowany jako %2C.

Zalecamy używanie zwykłych bibliotek tworzenia adresów URL na platformie do automatycznego kodowania adresów URL, aby mieć pewność, że są one odpowiednio ujęte w ramach 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 formacie UTF-8, może traktować adresy URL zawierające znaki w tym formacie jako „prawidłowe”, ale musi też przetłumaczyć te znaki przed wysłaniem ich na serwer WWW. Ten proces nazywa się kodowaniem URL lub kodowaniem procentowym.

Znaki specjalne

Musimy przekształcić znaki specjalne, ponieważ wszystkie adresy URL muszą być zgodne z składnią określoną w specyfikacji identyfikatora URI. Oznacza to, że adresy URL mogą zawierać tylko specjalny podzbiór znaków ASCII: znane symbole alfanumeryczne oraz niektóre znaki zarezerwowane do użycia jako znaki sterujące 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 kontrolne 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 podanym powyżej. Na przykład znaki w językach obcych, takie jak 上海+中國, należy zakodować za pomocą tych znaków. Zgodnie z popularną konwencją spacje (które są niedozwolone w adresach URL) są często reprezentowane za pomocą znaku plusa '+'.
  • Znaki w powyższym zestawie są zarezerwowane, ale muszą być używane dosłownie. Na przykład w adresach URL znak ? wskazuje początek ciągu zapytania. Jeśli chcesz użyć ciągu „? and the Mysterions”, musisz zakodować znak '?'.

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

Typowe znaki wymagające kodowania

Oto kilka typowych 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ć konstruowany z pojedynczych części, a wpisy użytkownika traktowane jako literalne znaki.

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.