Yüzdelik Kodlanmış

Çözülmüş Metin

URL Çözücü Nedir?

Sol panele yüzdelik kodlanmış bir dizgi yapıştır, sağ panel orijinalini gösterir. Kaputun altında decodeURIComponent çalışır; girdideki her %XX dizisini gezer, bu hex çiftlerini UTF-8 baytları olarak işler ve orijinal karakterleri yeniden kurar. Yani %20 bir boşluğa, %26 &’ya, %E2%9C%85 bir onay işaretine dönüşür. Ters yön URL Kodlayıcı’da yaşar.

Çözmek neden zor? Çünkü vahşi doğadaki her % geçerli bir yüzdelik kodlanmış dizinin parçası değildir. Hex olmayan karakterlerin (%G1, dizginin sonundaki %) izlediği yalnız bir % bozuktur ve çözücü bir URIError: URI malformed fırlatır. Bu sayfa bunu yakalar ve yığın izi yerine dostça bir "Geçersiz kodlama" mesajı gösterir, bu yüzden bozuk bir yapıştırma sayfayı bozmaz. Geçerli sayılan şeyin tam kuralları RFC 3986 §2.1 ve WHATWG URL Standardı’nda yaşar.

Çift kodlamaya dikkat et. Bir dizgiyi çözüp çıktıda HÂLÂ % karakterleri varsa (örneğin Ava Chen yerine Ava%2520Chen aldıysan), değer zincirin bir noktasında iki kez kodlanmıştır — genellikle zaten kodlanmış bir değeri otomatik olarak yeniden kodlayan bir proxy ya da framework. Tekrar çözmek seni geri kalan yola götürür. Wikipedia’nın çift kodlama notları bunun nasıl olduğuna dair iyi bir anlatım sunar. Her şey tarayıcında çalışır. Yükleme yok, sunucu yok, log yok.

URL Çözücü Nasıl Kullanılır

Üç adım. Sayfa sen yazarken güncellenir — Dönüştür düğmesi yok.

1

Kodlanmış dizgini yapıştır ya da Örnek’e tıkla

Yüzdelik kodlanmış bir dizgiyi sol panele bırak. Gerçekçi bir örnek yüklemek için Örnek’e tıkla. Örnek girdi:

Ava%20Chen%20%26%20friends%3F%20customer%40shop.com%20%20100%25%20off!

Bozuk girdi (yalnız bir <code>%</code>, <code>%G1</code> gibi geçersiz bir hex çifti) çıktı panelinde "Geçersiz kodlama" mesajı olarak görünür — tam başarısızlık kuralları için <a href="https://tc39.es/ecma262/#sec-decodeuricomponent-encodeduricomponent" target="_blank" rel="noopener">decodeURIComponent için ECMAScript spesifikasyonuna</a> bak.

2

Çözülmüş çıktıyı oku

Sağ panel çözülmüş metni gösterir. %20 boşluk olur, %26 & olur, %3F ? olur, %40 @ olur, %25 % olur. Sen yazarken güncellenir.

3

Kopyala ya da indir

Çözülmüş metni panoya koymak için Kopyala’ya, .txt dosyası olarak kaydetmek için İndir’e tıkla. Yeniden başlamak için girdi panelinde Temizle’yi kullan. Diğer yöne geçmek için URL Kodlayıcı’ya atla.

Bunu Gerçekten Ne Zaman Kullanırsın

Bir sorgu parametresinde gerçekte ne olduğunu okumak

?customer=Ava%20Chen&tag%5B0%5D=red gibi bir URL’yi yüzdelik kodlar yerli yerinde dururken gözle taramak zor. Buraya tek bir değer yapıştır, Ava Chen ya da tag[0] geri gelir; bu da parametrenin beklediğin şey olup olmadığını netleştirir. Bütün bir URL’yi parçalara ayırmak için URL Ayrıştırıcı sorgu parametrelerini otomatik işler.

Çift kodlanmış değerleri ayıklamak

Ava%2520Chen yapıştırırsın, bir kez çözersin, Ava%20Chen alırsın. O fazladan katman kesin kanıt — bir yerde bir proxy, framework ya da kütüphane değeri ikinci kez kodlamış. Gerçek dizgiyi almak için tekrar çöz. OAuth spesifikasyonları sık suçlulardandır çünkü redirect_uri değerleri çoğunlukla onları "yardımsever" biçimde tekrar kodlayan katmanlardan geçer.

Loglardan webhook ve analitik URL’lerini incelemek

Üretimde bir şey başarısız olduğunda, erişim logundaki URL genellikle tamamen kodlanmış olur — webhook’un gerçekten gönderdiği JSON yerine %7B%22event%22%3A%22signup%22%7D. Buraya yapıştır, {"event":"signup"} geri gelir; bu artık okuyabileceğin bir şey.

Bir magic link ya da parola sıfırlama URL’sini çözmek

Marco Rivera gibi bir müşteri "sıfırlama bağlantısı bozuk" dediğinde, bağlantı bir token, bir e-posta ve bir yönlendirme hedefi içerir — hepsi yüzdelik kodlanmış. Şüpheli parametreyi çözmek e-postanın doğru adres olup olmadığını, token’ın bir e-posta istemcisinin müdahalesinden sağ çıkıp çıkmadığını ya da yönlendirme URI’sinin kesilip kesilmediğini gösterir.

Sık Sorulan Sorular

Yalnız bir % ya da %G1 gibi bozuk girdiyle ne olur?

Yerel decodeURIComponent, geçerli bir %XX hex çifti olmayan bir dizide URIError: URI malformed fırlatır. Bu sayfa bunu yakalar ve çökmek yerine çıktı paneline "Geçersiz kodlama: ..." yazar. En yaygın nedenler, %25 olması gereken başıboş bir % harfidir veya sondaki bir hex basamağını kaybetmiş bir kopyala-yapıştırdır.

Girdimin çift kodlanmış olduğunu nasıl anlarım?

Bir kez çöz. Çıktıda hâlâ % karakterleri varsa (özellikle %20, %2F, %3A) ve düz metin olması gerekiyorsa, iki kez kodlanmış demektir. İlk çözmenin çıktısını tekrar çöz. Üç tur nadirdir ama olur — genellikle aynı değeri ayrı ayrı kodlayan üç farklı servisten oluşan bir zincir anlamına gelir.

Peki + işaretleri — boşluğa çözülmeli mi?

decodeURIComponent ile değil — +’ları rahat bırakır. +-boşluk olarak kuralı application/x-www-form-urlencoded’a (HTML form gönderimleri) aittir, genel URL yüzdelik kodlamasına değil. Girdin bir form gövdesinden geliyorsa ve boşluklar için + içeriyorsa, önce .replace(/\+/g, "%20") çalıştır, sonra çöz. application/x-www-form-urlencoded için WHATWG spesifikasyonu bu iki tatlı durumu açıklar.

Unicode ve emoji’yi doğru şekilde gidip gelir mi?

Evet. Yüzdelik kodlanmış çok baytlı UTF-8 dizileri (örn. onay işareti için %E2%9C%85, roket için %F0%9F%9A%80) doğrudan orijinal karakterlere geri çözülür. Bunun başarısız olmasının tek yolu, kodlayıcının UTF-8 olmayan bir karakter kümesi kullanmasıdır ki modern sistemler bunu yapmaz.

Buraya yapıştırdığım girdi bir yere gönderiliyor mu?

Hayır. Çözme tamamen tarayıcında çalışır. Ağ çağrısı yok, sunucu logu yok, hiçbir şey makinenden ayrılmaz. Token’lar, e-postalar, imzalı URL’ler — hepsi yapıştırmak için güvenli.

Burada ne kadar büyük bir dizgi çözebilirim?

Girdide 256 KB sınırı var. Yüzdelik kodlanmış yüzlerce KB metnin varsa, neredeyse kesin olarak bir araca yapıştırılmak yerine sunucu tarafında çözülmesi gereken bir yük var demektir — bu büyüklükte kodlanmış yükler genellikle base64 ya da bir istek gövdesi isteyen bir iş için URL kodlamanın yanlış kullanıldığını gösterir.

Diğer URL ve Kodlama Araçları

Çözmek tek bir işlem. İşte buna doğal olarak eşlik edenler: