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 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ż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:
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 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ć powstawanie długich adresów URL.