Kodowanie adresów URL

Niektóre znaki nie mogą wchodzić w skład adresu URL (np. spacja) ani inne znaki w adresie URL mają specjalne znaczenie. W formularzach HTML znak = to służy do oddzielania 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, pamiętaj, aby zakodować go jako %7C. przecinek w ciągu 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 adresy są prawidłowo kodowane na potrzeby platformy.

Tworzenie prawidłowego adresu URL

Może Ci się wydawać, że „prawidłowy”, Adres URL jest oczywisty, ale To nie do końca tak. Adres URL wpisany na pasku adresu w przeglądarka może na przykład zawierać znaki specjalne (np. "上海+中國"); przeglądarka musi wykonać wewnętrzne tłumaczenie zmień kodowanie tych znaków przed przesłaniem. Przy użyciu 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 „prawidłowe”, ale wymagają tego również przetłumaczyć te znaki przed wysłaniem ich na serwer WWW. Ten proces nazywa się kodowaniem URL-a lub kodowaniem procentowym.

Znaki specjalne

Znaki specjalne trzeba przetłumaczyć, Wszystkie adresy URL muszą spełniać składnię określoną w tagu Strój Specyfikacja identyfikatora zasobu (URI). Oznacza to, że adresy URL może zawierać tylko specjalny podzbiór znaków ASCII: znany symbole alfanumeryczne i niektóre znaki zarezerwowane do użytku jako elementy sterujące znaków w adresach URL. Tabela zawiera podsumowanie tych znaków:

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;

Tworząc prawidłowy adres URL, należy się upewnić, że zawiera on tylko znaki podane tabeli. Zgodność adresu URL w celu ogólnego korzystania z tego zestawu znaków prowadzi do dwóch problemów: pierwszego pominięcia i zastąpienia:

  • Znaki, które chcesz obsługiwać, znajdują się poza zestawem znaków wymienionych powyżej. Na przykład znaki obcych języków, takie jak 上海+中國, muszą być zakodowane 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 w powyższym zestawie są znakami zarezerwowanymi, ale muszą być używane dosłownie. Na przykład ? jest używany w adresach URL do oznaczania początku ciągu zapytania, jeśli chcesz użyć „? i Tajemnice” 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 typowych znaków, które muszą być zakodowane:

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

Konwersja adresu URL otrzymanego z danych wejściowych użytkownika jest czasami podchwytliwe. Na przykład użytkownik może wprowadzić adres jako „ul. Główna” Ogólnie URL trzeba utworzyć z jego części, traktując w postaci znaków wpisywanych przez użytkownika.

Dodatkowo w przypadku wszystkich usług internetowych i interfejsów API Google Maps Platform ograniczenie długości adresów URL wynosi 16 384 znaki. W większości usług limit znaków będzie rzadko osiągany. Pamiętaj jednak: pamiętaj, że niektóre usługi mają kilka parametrów, które mogą powodować generowanie długich adresów URL.