Niektóre znaki nie mogą być częścią adresu URL (np. spacja), a inne mają w adresie URL specjalne znaczenie. W formularzach HTML nazwa jest oddzielona od wartości za pomocą znaku =
. Ogólna składnia identyfikatora URI wykorzystuje kodowanie adresów URL do rozwiązania tego problemu, natomiast formularze HTML wykonują dodatkowe zamienniki zamiast stosowania procentowego kodowania wszystkich takich znaków.
Na przykład spacje w ciągu znaków są kodowane za pomocą %20
lub zastąpione znakiem plusa (+
). Jeśli jako separatora używasz pionowej kreski (|
), pamiętaj, aby zakodować ją jako %7C
. Przecinek w ciągu znaków powinien być zakodowany jako %2C
.
Zalecamy używanie zwykłych bibliotek do tworzenia adresów URL na Twojej platformie do automatycznego kodowania adresów URL. Dzięki temu będziesz mieć pewność, że adresy URL działają prawidłowo z użyciem znaków zmiany znaczenia.
Tworzenie prawidłowego adresu URL
Może Ci się wydawać, że „prawidłowy” adres URL jest oczywisty,
ale nie do końca tak jest. Na przykład adres URL wpisany w pasku adresu w przeglądarce może zawierać znaki specjalne (np."上海+中國"
). Przed przesłaniem przeglądarka musi je wewnętrznie przetłumaczyć na inne kodowanie.
Na tej samej zasadzie każdy kod generujący lub akceptujący dane wejściowe w formacie UTF-8 może traktować adresy URL ze znakami UTF-8 jako „prawidłowe”, ale przed wysłaniem ich na serwer WWW musi je przetłumaczyć.
Ten proces nazywa się
kodowaniem adresów URL lub kodowaniem procentowym.
Znaki specjalne
Musimy tłumaczyć znaki specjalne, ponieważ wszystkie adresy URL muszą być zgodne ze składnią określoną w specyfikacji Uniform Resource Identifier (URI). Oznacza to, że adresy URL muszą zawierać wyłącznie specjalny podzbiór znaków ASCII: znane symbole alfanumeryczne i niektóre znaki zarezerwowane, które mogą być używane jako znaki kontrolne w adresach URL. Podsumowanie tych znaków znajdziesz w tej tabeli:
Ustaw | znaków | Wykorzystanie 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 s 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 | Ciągi tekstowe, użycie schematu (http ), port (8080 ) itp. |
Niezarezerwowane | - _ . ~ | Ciągi tekstowe |
Zarezerwowano | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | Znaki kontrolne i ciągi tekstowe |
Tworząc prawidłowy adres URL, musisz się upewnić, że zawiera on tylko znaki widoczne w tabeli Podsumowanie prawidłowych znaków adresu URL. Stworzenie adresu URL w taki sposób, aby używał tego zestawu znaków, zwykle prowadzi do 2 problemów: pominięcia i zastąpienia:
- Znaki, które mają być obsługiwane, istnieją poza powyższym zestawem. Na przykład znaki w językach obcych, takich jak
上海+中國
, muszą być zakodowane przy użyciu powyższych znaków. Zgodnie z powszechną konwencją spacje (które nie są dozwolone w adresach URL) są często oznaczane również znakiem 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 wskazywania początku ciągu zapytania. Jeśli chcesz użyć ciągu znaków „? i tajemnic”, musisz zakodować znak'?'
.
Wszystkie znaki przeznaczone do kodowania URL są kodowane przy użyciu znaku '%'
i dwuznakowej wartości szesnastkowej odpowiadającej ich znakowi UTF-8. Na przykład atrybut 上海+中國
w UTF-8 powinien być zakodowany na potrzeby adresu URL jako %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B
. Ciąg ? and the Mysterians
będzie zakodowany na potrzeby adresu 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:
Niebezpieczny znak | Zakodowana wartość |
---|---|
Spacja | %20 |
” | %22 |
< | %3C |
> | %3E |
# | %23 |
% | %25 |
| | %7C |
Konwersja adresu URL uzyskanego dzięki danym wprowadzanym przez użytkownika bywa podejrzana. Na przykład użytkownik może wpisać adres jako „ul. Główna 5”. Adres URL należy zazwyczaj utworzyć z części, traktując każde dane wprowadzone przez użytkownika jako znaki literackie.
Dodatkowo w przypadku wszystkich usług internetowych Google Maps Platform i statycznych interfejsów API internetowych adresy URL mogą mieć maksymalnie 16 384 znaki. W większości usług ten limit znaków rzadko jest zbliżany do limitu. Pamiętaj jednak, że niektóre usługi mają kilka parametrów, które mogą powodować długie adresy URL.