URL Kodlama

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

Örneğin, bir dizedeki boşluklar %20 ile kodlanır veya artı işaretini (+) tıklayın. Ayırıcı olarak dikey çizgi karakteri (|) kullanıyorsanız dikey çizgiyi %7C olarak kodlamak için kullanılır. Bir dizedeki virgül %2C olarak kodlanmalıdır.

URL'lerinizin platformunuz için uygun şekilde kaçış karakteri eklendiğinden 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

Bu örneğin "geçerli" bir URL kendiliğinden ortaya çıkar, ancak durum pek öyle değil. Örneğin, bir tarayıcıdaki adres çubuğuna girilen bir URL özel karakterler (ör. "上海+中國") içerebilir. Tarayıcının, bu karakterleri iletmeden önce 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 değerlendirebilir ancak bu karakterleri bir web sunucusuna göndermeden önce çevirmesi de gerekir. Bu işleme URL kodlama veya yüzde kodlama denir.

Özel karakterler

Tüm URL'lerin Tekdüzen Kaynak Tanımlayıcı (URI) spesifikasyonu tarafından 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: Bilinen alfanümerik semboller ve URL'lerde kontrol karakteri olarak kullanılmak üzere ayrılmış bazı karakterler. Bu tabloda bu karakterler özetlenmiştir:

Geçerli URL Karakterlerinin Özeti
HazırkarakterlerURL 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, URL'nin yalnızca tablosunu oluşturalım. Bir URL'nin bu karakter grubunu kullanacak şekilde düzenlenmesi genellikle iki soruna yol açar: biri atlama, diğeri de değiştirme.

  • Yönetmek istediğiniz karakterler ayarlandı. Örneğin, 上海+中國 gibi yabancı dillerdeki karakterlerin yukarıdaki karakterler kullanılarak kodlanması gerekir. Yaygın bir kurala göre, boşluklar (URL'lerde izin verilmez) genellikle artı '+' karakteri kullanılarak da temsil edilir.
  • Yukarıdaki kümede ayrılmış karakterler olarak bulunan karakterlerin, olduğu gibi kullanılması gerekir. Örneğin, ?, sorgu dizesinin başlangıcını belirtmek için URL'lerde kullanılır. "? and the Mysterions" 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 bir onaltılık değer kullanılarak kodlanır. Örneğin, UTF-8'deki 上海+中國, URL olarak %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B şeklinde kodlanır. ? and the Mysterians dizesi, URL kodlamasında %3F+and+the+Mysterians veya %3F%20and%20the%20Mysterians olarak görünür.

Kodlama gerektiren 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ı "5. Cadde&Ana Cadde" şeklinde bir adres girebilir. Genel olarak, URL'nizi kendi parçalarından oluşturmanız gerekir: herhangi bir kullanıcı girişi değişmez karakter olarak kabul edilir.

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