URL Kodlama
Bir metni bir URL içinde sorunsuz taşınabilmesi için yüzde kodlamasıyla kodlayın; tamamen tarayıcınızda.
Tamamen tarayıcınızda çalışır. Hiçbir şey yüklenmez, günlüğe yazılmaz veya saklanmaz.
Bir URL'nin bir dil bilgisi vardır ve onun parçası olan karakterler ("?", "&", "/", "#", boşluklar) yapının değil bir değerin parçası olduklarında kaçışlanmalıdır. Bu kaçışlamaya yüzde kodlaması denir.
Nasıl çalışır
RFC 3986'nın ayrılmamış kümesinde olmayan her karakter (harfler, rakamlar, "-", ".", "_" ve "~") bir yüzde işareti ve UTF-8 baytlarının her birinin onaltılık değeriyle değiştirilir. Boşluk %20 olur, aksanlı bir harf ise iki kaçış dizisine dönüşür, çünkü UTF-8'de iki bayttır.
Form verisi biçemi, HTML form gönderimi bu kuraldan eski olduğu için vardır: orada boşluk "+" olur ve "~" de kaçışlanır. Bir application/x-www-form-urlencoded gövdesi oluştururken bunu, diğer her şey için bileşen biçemini seçin.
Örnekler
| Durum | Girdi | Sonuç |
|---|---|---|
| Bir sorgu dizesine giren arama ifadesi | coffee & cake | coffee%20%26%20cake |
| Aynı ifade form verisi olarak | coffee & cake | coffee+%26+cake |
Sık sorulan sorular
Bütün bir URL'yi bununla mı kodlamalıyım?
Hayır. Tam bir URL'yi kodlamak "://" kısmını ve ayırıcıları da kaçışlar ve elinizde hiçbir istemcinin izleyemeyeceği bir dize kalır. Değerleri ayrı ayrı kodlayın, ardından URL'yi onlarla oluşturun.
Burada "!" neden kodlanıyor da tarayıcımın konsolu onu olduğu gibi bırakıyor?
JavaScript'in encodeURIComponent işlevi, RFC 3986 onları ayırmış olsa da "!", "'", "(", ")" ve "*" karakterlerini bilerek atlar. Bunları kodlamak her zaman kabul edilir ve daha katı ayrıştırıcılarla sürprizleri önler; bu yüzden bu araç onları kodlar.
Peki bir fragment'teki "#" ne olacak?
Bir değerin içindeki sabit bir "#" %23 olarak kodlanmalıdır; aksi takdirde arkasından gelen her şey fragment olarak okunur ve sunucuya hiç ulaşmaz.
Bilmekte fayda var
- Her şey tarayıcınızda gerçekleşir. Yapıştırdığınız içerik yüklenmez, kaydedilmez ve saklanmaz.