URL kodlaması nedir:
URL'nin içinde özel karakterler bulunduğunda bir URL kodlanmalıdır. Örneğin:
console.log(encodeURIComponent('?notEncoded=&+'));
Bu örnekte, dize dışındaki tüm karakterlerin notEncoded
% işaretleriyle kodlandığını görebiliriz. URL kodlaması, % ile tüm özel karakterlerden kaçtığından yüzde kodlaması olarak da bilinir . Sonra bu% işaretinden sonra her özel karakterin benzersiz bir kodu vardır
URL kodlamasına neden ihtiyacımız var:
Bazı karakterlerin URL dizesinde özel bir değeri vardır. Örneğin,? karakteri bir sorgu dizesinin başlangıcını belirtir. Bir kaynağı web üzerinde başarılı bir şekilde bulmak için, bir karakterin dizenin bir parçası veya url yapısının bir parçası olarak ne zaman kastedildiğini ayırt etmek gerekir.
JS'de URL kodlamasını nasıl sağlayabiliriz:
JS, URL'leri kolayca kodlamak için kullanabileceğimiz bir dizi yardımcı program işlevi sunar. Bunlar iki uygun seçenektir:
encodeURIComponent()
: URI'nin bir bileşenini bağımsız değişken olarak alır ve kodlanmış URI dizesini döndürür.
encodeURI()
: Bir URI'yi bağımsız değişken olarak alır ve kodlanmış URI dizesini döndürür.
Örnek ve uyarılar:
URL'nin tamamını (şema dahil, ör. Https: //) içine geçirmediğinizi unutmayın encodeURIComponent()
. Bu aslında işlevsel olmayan bir URL'ye dönüştürebilir. Örneğin:
// for a whole URI don't use encodeURIComponent it will transform
// the / characters and the URL won't fucntion properly
console.log(encodeURIComponent("http://www.random.com/specials&char.html"));
// instead use encodeURI for whole URL's
console.log(encodeURI("http://www.random.com/specials&char.html"));
Tüm URL'yi koyduğumuzda, encodeURIComponent
kanatlı eğik çizgilerin (/) de özel karakterlere dönüştürüldüğünü görebiliriz. Bu, URL'nin artık düzgün çalışmamasına neden olacaktır.
Bu nedenle (adından da anlaşılacağı gibi) şunları kullanın:
encodeURIComponent
URL'nin kodlamak istediğiniz belirli bir bölümünde.
encodeURI
kodlamak istediğiniz URL'nin tamamı üzerinde.