URL Kodlama / Çözme (Encode / Decode)
Metni URL'de güvenle kullanılabilecek biçime kodlayın ya da yüzde kodlu metnin kodunu çözün.
URL kodlama nasıl çalışır?
URL'ler yalnızca belirli ASCII karakterlerini güvenle taşır. Türkçe harfler, boşluk ve &, ?, = gibi karakterler yüzde kodlamayla %XX biçiminde yazılır. Her bayt iki onaltılık rakamla gösterilir; Türkçe harfler UTF-8'de iki bayt olduğu için iki grup kod alır.
Üç işlem seçeneği
- Parametre kodla (encodeURIComponent): bir sorgu parametresinin değerini kodlar. / ? & = : gibi karakterler de kodlanır.
- Tam URL kodla (encodeURI): bütün adresi kodlar, adresin yapısını bozmaz; / ? & = karakterleri olduğu gibi kalır.
- Kodu çöz (decode): %20, %C5%9F gibi dizileri okunur metne çevirir. + işareti boşluk sayılır.
Örnekler
| Girdi | İşlem | Sonuç |
|---|---|---|
| merhaba dünya & şeker=1 | Parametre kodla | merhaba%20d%C3%BCnya%20%26%20%C5%9Feker%3D1 |
| https://a.com/yol dizin?q=şeker | Tam URL kodla | https://a.com/yol%20dizin?q=%C5%9Feker |
| %C5%9F%20a+b | Kodu çöz | ş a b |
Dikkat edilmesi gerekenler
- Aynı metni iki kez kodlamayın; %20 ikinci kodlamada %2520 olur ve bağlantı bozulur.
- Parametre değerini kodlarken encodeURIComponent, hazır bir adresi düzeltirken encodeURI seçin.
- Geçersiz bir yüzde dizisi (örneğin eksik %) kod çözmede hata verir.
Ne zaman gerekir?
Sorgu parametresinde Türkçe karakter ya da boşluk bulunan bağlantılar, UTM etiketli reklam adresleri, API istekleri ve yönlendirme (redirect) adresleri kodlama gerektirir. Bir bağlantı tıklayınca bozuk görünüyorsa ya da adreste %C5%9F gibi diziler varsa kodunu çözerek asıl metni okuyabilirsiniz. Geliştiriciler için hata ayıklama, SEO uzmanları için de adres temizliği açısından günlük bir işlemdir.
Boşluk neden bazen %20, bazen + olur?
İkisi de boşluğun kodlanmış hali ama farklı yerlerde kullanılır. Adresin yol kısmında (örneğin /dosyalar/yeni%20rapor.pdf) boşluk %20 olarak yazılır. Web formlarının gönderdiği sorgu dizelerinde ise boşluk geleneksel olarak + işaretiyle gösterilir: ?q=yuzde+hesaplama.
JavaScript'teki encodeURIComponent işlevi boşluğu her zaman %20'ye çevirir. Bir sunucu + işaretini boşluk olarak okumuyorsa ya da gerçek bir + karakteri göndermeniz gerekiyorsa, onu %2B olarak kodlamanız gerekir.
Sık sorulan sorular
URL encode nedir?
URL'de özel anlamı olan ya da güvenli olmayan karakterlerin %XX biçiminde yüzde kodlamayla yazılmasıdır. Örneğin boşluk %20, ş harfi %C5%9F olur.
encodeURIComponent ile encodeURI arasındaki fark nedir?
encodeURIComponent bir parametre değerini kodlar ve / ? & = gibi karakterleri de kodlar. encodeURI tüm adresi kodlar ve bu ayırıcı karakterleri bozmaz.
Artı işareti neden boşluk olarak çözülüyor?
Form verilerinde boşluk + olarak da yazılır. Kod çözme sırasında + işaretini boşluğa çeviririz; gerçek bir artı işaretiyse %2B yazılmış olmalıdır.
Veriler sunucuya gönderiliyor mu?
Hayır. Kodlama ve kod çözme tamamen tarayıcınızda yapılır.