URL Kodlaması

Bazı karakterler URL'nin bir parçası olamaz (örneğin, boşluk) ve diğer bazı karakterlerin URL'de özel bir anlamı vardır. HTML formlarında, adı değerden ayırmak için = karakteri kullanılır. URI genel söz dizimi, bu sorunu çözmek için URL kodlaması kullanır. HTML formları ise bu tür karakterlerin tümü için yüzde kodlaması uygulamak yerine bazı ek değişiklikler yapar.

Örneğin, bir dizedeki boşluklar %20 ile kodlanır veya artı işaretiyle (+) değiştirilir. Ayırıcı olarak dikey çizgi karakteri (|) kullanıyorsanız dikey çizgiyi %7C olarak kodladığınızdan emin olun. Dizedeki virgül %2C olarak kodlanmalıdır.

URL'lerin platformunuz için doğru şekilde kodlandığından emin olmak amacıyla, URL'lerinizi otomatik olarak kodlamak için platformunuzun normal URL oluşturma kitaplıklarını kullanmanız önerilir.

Geçerli bir URL oluşturma

"Geçerli" bir URL'nin ne olduğu açık gibi görünse de aslında durum tam olarak öyle değildir. Örneğin, bir tarayıcının adres çubuğuna girilen URL özel karakterler (ör."上海+中國") içerebilir. Tarayıcının, iletimden önce bu karakterleri dahili olarak farklı bir kodlamaya çevirmesi gerekir. Aynı şekilde, UTF-8 girişi oluşturan veya kabul eden tüm kodlar, UTF-8 karakterleri içeren URL'leri "geçerli" olarak kabul edebilir ancak bu karakterleri bir web sunucusuna göndermeden önce çevirmesi de gerekir. Bu işleme URL kodlaması veya yüzde kodlaması adı verilir.

Özel karakterler

Tüm URL'lerin Tekdüzen Kaynak Tanımlayıcısı (URI) spesifikasyonunda belirtilen söz dizimine uyması gerektiğinden özel karakterleri çevirmemiz gerekir. Bu, URL'lerin yalnızca ASCII karakterlerinin özel bir alt kümesini içermesi gerektiği anlamına gelir: tanıdık alfanümerik simgeler ve URL'lerde kontrol karakterleri olarak kullanılacak bazı ayrılmış karakterler. Bu tabloda bu karakterler özetlenmektedir:

Geçerli URL karakterlerinin özeti
AyarlandıkarakterlerURL kullanımı
Alfanümerik 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 Metin dizeleri, şema kullanımı (http), bağlantı noktası (8080) vb.
Ayrılmamış - _ . ~ Metin dizeleri
Rezervasyon yapıldı ! * ' ( ) ; : @ & = + $ , / ? % # [ ] Kontrol karakterleri ve/veya metin dizeleri

Geçerli bir URL oluştururken yalnızca tabloda gösterilen karakterleri içerdiğinden emin olmanız gerekir. Bir URL'yi bu karakter grubunu kullanacak şekilde uyarlamak genellikle iki soruna yol açar: karakterlerin atlanması ve karakterlerin değiştirilmesi:

  • İşlemek istediğiniz karakterler yukarıdaki kümenin dışında yer alıyorsa. Örneğin, 上海+中國 gibi yabancı dillerdeki karakterlerin yukarıdaki karakterler kullanılarak kodlanması gerekir. Genel kural olarak, boşluklar (URL'lerde izin verilmez) genellikle artı '+' karakteri kullanılarak da temsil edilir.
  • Karakterler, yukarıdaki grupta ayrılmış karakterler olarak bulunur ancak tam anlamıyla kullanılmaları gerekir. Örneğin, URL'lerde sorgu dizesinin başlangıcını belirtmek için ? kullanılır. "? ve Gizemliler" dizesini kullanmak istiyorsanız '?' karakterini kodlamanız gerekir.

URL kodlaması yapılacak tüm karakterler, '%' karakteri ve UTF-8 karakterlerine karşılık gelen iki karakterli onaltılık değer kullanılarak kodlanır. Örneğin, UTF-8'deki 上海+中國, URL kodlamasıyla %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B olur. ? and the Mysterians dizesi, URL kodlamalı olarak %3F+and+the+Mysterians veya %3F%20and%20the%20Mysterians şeklinde olur.

Kodlanması gereken yaygın karakterler

Kodlanması gereken bazı yaygın karakterler şunlardır:

Güvenli olmayan karakter Kodlanmış değer
Boşluk %20
" %22
< %3C
> %3E
# %23
% %25
| %7C

Kullanıcı girişinden aldığınız bir URL'yi dönüştürmek bazen zor olabilir. Örneğin, bir kullanıcı adresi "5th&Main St." olarak girebilir. Genellikle URL'nizi parçalarından oluşturmanız ve tüm kullanıcı girişlerini değişmez karakterler olarak ele almanız gerekir.

Ayrıca URL'ler, tüm Google Haritalar Platformu web hizmetleri ve statik web API'leri için 16.384 karakterle sınırlıdır. Çoğu hizmette bu karakter sınırlamasına nadiren yaklaşılır. Ancak bazı hizmetlerin, uzun URL'lere neden olabilecek çeşitli parametreleri olduğunu unutmayın.