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. Ogólna składnia URI używa kodowania URL, aby rozwiązać ten problem, a formularze HTML stosują dodatkowe zamiany zamiast kodowania procentowego dla wszystkich takich znaków.
Na przykład spacje w ciągu znaków są kodowane jako %20 lub zastępowane znakiem plusa (+). Jeśli używasz kreski pionowej (|) jako separatora, pamiętaj, aby zakodować ją jako %7C. Przecinek w ciągu znaków powinien być zakodowany jako %2C.
Aby automatycznie kodować adresy URL i mieć pewność, że są one prawidłowo zmienione, zalecamy używanie standardowych bibliotek do tworzenia adresów URL na platformie.
Tworzenie prawidłowego adresu URL
Może się wydawać, że „prawidłowy” adres URL jest oczywisty, ale tak nie jest. Adres URL wpisany w pasku adresu w przeglądarce może na przykład zawierać znaki specjalne (np."上海+中國"). Przeglądarka musi wewnętrznie przetłumaczyć te znaki na inne kodowanie przed transmisją.
Podobnie 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 przed wysłaniem ich na serwer internetowy musi je przetłumaczyć.
Ten proces nazywa się
kodowaniem URL lub kodowaniem procentowym.
Znaki specjalne
Musimy przetł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ć tylko specjalny podzbiór znaków ASCII: znane symbole alfanumeryczne i niektóre znaki zarezerwowane do użycia jako znaki sterujące w adresach URL. Ta tabela zawiera podsumowanie tych znaków:
| Ustaw | znaków | Użycie adresu URL |
|---|---|---|
| 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 | - _ . ~ | Ciągi tekstowe |
| Zarezerwowane | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | Znaki sterujące lub ciągi tekstowe |
Podczas tworzenia prawidłowego adresu URL musisz się upewnić, że zawiera on tylko znaki widoczne w tabeli. Dostosowanie adresu URL do tego zestawu znaków zwykle prowadzi do 2 problemów: pominięcia i zastąpienia:
- Znaki, które chcesz obsługiwać, znajdują się poza powyższym zestawem. Na przykład znaki w językach obcych
takie jak
上海+中國muszą być zakodowane przy użyciu powyższych znaków. Zgodnie z powszechną konwencją spacje (które są niedozwolone w adresach URL) są często reprezentowane za pomocą znaku plusa'+'. - Znaki znajdują się w powyższym zestawie jako znaki zarezerwowane,
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 „? and the Mysterions”, musisz zakodować znak'?'.
Wszystkie znaki, które mają być zakodowane w adresie URL, są kodowane przy użyciu znaku '%' i 2-znakowej wartości szesnastkowej odpowiadającej ich znakowi UTF-8. Na przykład ciąg 上海+中國 w kodowaniu UTF-8 zostanie zakodowany w adresie URL jako %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B. Ciąg ? and the Mysterians zostanie zakodowany w adresie URL jako %3F+and+the+Mysterians lub %3F%20and%20the%20Mysterians.
Typowe znaki, które wymagają kodowania
Niektóre typowe znaki, które muszą być zakodowane:
| Niedozwolony znak | Zakodowana wartość |
|---|---|
| Spacja | %20 |
| „ | %22 |
| < | %3C |
| > | %3E |
| # | %23 |
| % | %25 |
| | | %7C |
Konwertowanie adresu URL otrzymanego z danych wejściowych użytkownika może być czasami trudne. Użytkownik może na przykład wpisać adres jako „5th&Main St.”. Zasadniczo adres URL należy tworzyć z jego części, traktując dane wejściowe użytkownika jako znaki dosłowne.
Ponadto adresy URL są ograniczone do 16384 znaków w przypadku wszystkich usług internetowych i statycznych interfejsów API Google Maps Platform. W przypadku większości usług to ograniczenie znaków rzadko będzie osiągane. Pamiętaj jednak, że niektóre usługi mają kilka parametrów, które mogą powodować powstawanie długich adresów URL.