URL Kodlayıcı
Herhangi bir karakter dizisini URL’lerde ve sorgu parametre değerlerinde güvenle kullanmak için yüzde kodlayın
Düz Metin
Yüzde Kodlanmış
URL Kodlayıcı nedir?
Sol panele bir karakter dizisi atın, sağ panel yüzde kodlanmış halini gösterir. Arka planda encodeURIComponent çalışır; bu fonksiyon, URL’de özel anlam taşıyan her karakteri escape eder — boşluklar %20 olur, ve işaretleri %26 olur, at işareti %40 olur, böyle gider. Sorgu parametresi DEĞERLERİ, yol segmentleri ve ham bir karakter dizisinin URL içinde onu kırmadan yolculuk etmesi gereken her yer için ihtiyacınız olan kodlama tam da budur.
İki kodlama türü var ve aralarındaki fark önemli. encodeURIComponent (bu sayfa) ?, #, &, = ve / dahil özel olan her şeyi escape eder — çünkü değer düzeyinde bu karakterler URL’nin anlamını değiştirir. encodeURI daha esnektir ve bu yapısal karakterleri rahat bırakır, çünkü zaten oluşturulmuş tam bir URL’yi kodladığınızı varsayar. Detay isterseniz, MDN ayrılmış karakterlerin tablosunu veriyor. Parçalardan komple bir URL kuruyorsanız, ihtiyacınız olan bu sayfa değil URL Builder.
Asıl kodlama kuralı RFC 3986 §2.1’den gelir: güvensiz her bayt, UTF-8 baytlarının iki onaltılık basamağı olarak % ile yazılır. Roket gibi bir emoji yüzde üçlülerinden dördünü alır (UTF-8’de dört bayttır), oysa ! gibi bir ASCII tek üçlüde kalır. WHATWG URL Standardı modern tarayıcıların bunu nasıl yaptığını resmileştirir ve elle kontrol etmek isterseniz Wikipedia’nın yüzde-kodlama makalesinde temiz bir referans tablo bulunur. Her şey tarayıcınızda olur. Hiçbir şey yüklenmez, hiçbir şey loglanmaz.
URL Kodlayıcı Nasıl Kullanılır
Üç adım. Siz yazdıkça sayfa güncellenir — Dönüştür düğmesi yok.
Karakter dizinizi yapıştırın veya Örnek’e tıklayın
Sol panele herhangi bir metin yazın veya yapıştırın. Gerçekte karşılaştığınız türden karakterler içeren bir karakter dizisini yüklemek için Örnek’e tıklayın — boşluklar, ve işaretleri, bir e-posta, yüzde işareti. Örnek girdi:
Ava Chen & friends? [email protected] 100% off!Unicode ve emoji sorunsuz çalışır — kodlayıcı UTF-8 bayt dizilerini kullanır, bu yüzden bir Japonca isim veya bir emoji çok baytlı bir yüzde dizisine kodlanır ve standartlara uyan herhangi bir kod çözücüden temiz şekilde geri döner.
Kodlanmış çıktıyı okuyun
Sağ panel yüzde kodlanmış halini gösterir. Boşluklar %20, & %26, ? %3F, @ %40 ve % da kendisi %25 olur. Siz yazdıkça güncellenir.
Kopyalayın veya indirin
Kodlanmış karakter dizisini panonuza koymak için Kopyala’ya, .txt dosyası olarak kaydetmek için İndir’e tıklayın. Baştan başlamak için girdi panelinde Temizle’yi kullanın. Tersini yapmak için URL Çözücü’ye geçin.
Bunu Gerçekten Ne Zaman Kullanırsınız
Sorgu dizesi değerini elle kurmak
Hızlı bir curl testi veya bir derin bağlantı için ?customer=Ava%20Chen&status=active oluşturmanız mı gerekiyor? Her değeri burada kodlayıp URL’nize yapıştırın. İçinde & olan bir değeri (“Smith & Co.” gibi bir müşteri adı) kodlamayı unutmak, “API parametremin sadece yarısını görüyor” gibi gizemli hataların klasik kaynağıdır.
Yönlendirme hedefini kodlamak
OAuth akışları ve SSO yönlendirmeleri, hedef URL’yi bir sorgu parametresi içinde geçer (örn. ?return_to=...). O hedef URL’nin kendisi de :, /, ?, & içerir — dış URL’nin biçimi bozulmasın diye hepsinin yüzde kodlanması gerekir. RFC 6749 §3.1.2 bunu OAuth yönlendirme URI’leri için açıkça vurgular.
İçinde eğik çizgi olan bir yol segmentini kodlamak
REST API’nizde /repos/:owner/:name gibi rotalar varsa ve isim içinde bir eğik çizgi varsa (nadir ama bazı kataloglarda yasal), eğik çizgi %2F’ye kodlanmalı; aksi halde router onu yol ayırıcısı olarak görür. İndirme URL’lerindeki boşluk veya aksanlı dosya adlarında da aynı mantık geçerli.
URL’ye değmeden önce kullanıcı girdisini temizlemek
Bir HTML formundan, arama kutusundan veya CSV içe aktarmasından URL’ye giden her karakter dizisinin kodlanması gerekir. Kodlanmamış kullanıcı girdisi tam olarak kırık bağlantılarla, parametre enjeksiyon vektörleriyle veya ASCII kullanıcılar için çalışıp diğer herkes için sessizce başarısız olan URL’lerle karşılaşmanın yoludur. OWASP’ın path traversal notları bu adımı atlamanın bedelini iyi hatırlatır.
Sık Sorulan Sorular
encodeURIComponent mı kullanmalıyım, encodeURI mi?
Neredeyse her zaman encodeURIComponent — bu sayfanın kullandığı da bu. Sorgu parametresi değerleri, yol segmentleri ve karakter dizisinin URL’nin bir “parçası” olması gereken her yer için doğru seçim. encodeURI, yapısal olarak zaten tamamlanmış bir URL’yi kodlamak içindir (pratikte nadir — genelde parçalardan kuruyorsunuz). Yukarıda bağlantısı verilen MDN referansında her birinin hangi karakterleri escape ettiğinin tam tablosu var.
Boşluklar için neden bazen + bazen %20 kullanılıyor?
İki kodlama geleneği yan yana yaşıyor. application/x-www-form-urlencoded (HTML form gönderiminin ?anahtar=değer gövdesi) boşluk için + kullanır. RFC 3986’dan gelen genel URL yüzde kodlaması %20 kullanır. encodeURIComponent her zaman %20 üretir. Sunucuların çoğu ikisini de kabul eder, ancak alt akıştaki kod çözücünüz form-katı ise kodlamadan sonra .replace(/%20/g, "+") ile değiştirin.
Emojileri ve ASCII dışı metinleri doğru ele alıyor mu?
Evet. Kodlayıcı önce girdiyi UTF-8 olarak serileştirir, sonra her baytı yüzde kodlar. Yani bir emoji çok baytlı bir yüzde dizisine dönüşür ve standartlara uyan herhangi bir kod çözücü onu sorunsuzca geri çevirir. Latin-1 veya başka bir eski kodlama kullanan bir sistemle entegre oluyorsanız başka bir probleminiz var — yukarıdaki sistemi değiştirin, UTF-8 olmayan bir kodlayıcıyı kendiniz uydurmayın.
encodeURIComponent hangi karakterleri kodlamaz?
A-Z ve a-z harfleri, 0-9 rakamları ve ayrılmamış karakterler - _ . ! ~ * ' ( ). Geri kalan her şey yüzde kodlanır. Liste doğrudan orijinal şartnameden gelir ve her modern JavaScript motorunda sabittir — net referans için ECMAScript’in encodeURIComponent şartnamesine bakın.
Buraya yapıştırdığım girdi bir yere gönderiliyor mu?
Hayır. Kodlama tamamen tarayıcınızda JavaScript motoru üzerinden çalışır. Ağ çağrısı yok, sunucu yok, log yok. Sırlar, token’lar, hassas her şeyi yapıştırın — makinenizden çıkmaz.
Burada ne kadar büyük bir karakter dizisi kodlayabilirim?
Girdide 256 KB’lık bir üst sınır var. Gerçek dünyadaki URL değerleri en fazla birkaç kilobayttır. Birkaç MB veriyi kodlamanız gerekiyorsa, neredeyse kesin olarak gövdesini POST etmeniz gereken bir yükü URL’ye gömmeye çalışıyorsunuz — sunucu tarafında kodlayın ve gidiş-dönüşü atlayın.
Diğer URL ve Kodlama Araçları
Kodlama tek bir işlem. Doğal şekilde yanına oturanlar: