Niektórych znaków (np. spacji) nie można umieszczać w adresie URL, a inne znaki mają w nim specjalne znaczenie. W formularzach HTML nazwa jest oddzielona od wartości znakiem =
. 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 standardowych 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ż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 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 kontrolne w adresach URL. Te znaki są opisane w tej tabeli:
Ustawiono | znaków | Uż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 określonym 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 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 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 będzie rzadko osiągany. Pamiętaj jednak, że niektóre usługi mają kilka parametrów, które mogą powodować długie adresy URL.