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:
Do startu | 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 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.