Her metni URL olarak kodlayın veya çözün

Bir sorgu değerini, yol parçasını ya da tam bir URL’yi yüzde kodlamayla kodlayın; %XX dizilerini de okunabilir metne geri çevirin. UTF-8’i, form tarzı + boşluklarını ve satır başına bir değeri destekler. Hiçbir şey tarayıcınızdan çıkmaz.

Metin URL olarak nasıl kodlanır veya çözülür

  1. Metni, değeri ya da URL’yi girdi kutusuna yapıştırın.
  2. Kodlama türünü seçin. Tek bir sorgu değeri veya yol parçası için Bileşen kipini koruyun. Yalnızca boşlukları ve ASCII dışı harfleri düzeltilmesi gereken tam bir adres için Tam URL’yi seçin. Bir HTML form gönderimi olarak okunacak veri için Form’u seçin.
  3. Kodla veya Çöz’e basın. Satır başına bir değer işaretliyken her satır ayrı işlenir; böylece bir parametre ya da URL listesinin tamamını tek seferde dönüştürebilirsiniz.
  4. Sonucu kopyalayın ya da yeniden çalıştırmak için Sonucu girdi olarak kullan’a basın; örneğin iki kez kodlanmış bir değerin kabuğunu açmak için.

Sorgu dizesi içeren tam bir URL’yi çözdüğünüzde araç her parametrenin adını ve değerini düz metin olarak da listeler; uzun bir izleme ya da yönlendirme URL’sini okumanın en hızlı yolu budur.

Yüzde kodlama nedir

Bir URL yalnızca sınırlı sayıda ASCII karakteri içerebilir ve bunların birçoğunun bir görevi vardır: ? sorguyu başlatır, & parametreleri ayırır, # parçayı (fragment) başlatır, / yol parçalarını ayırır. Geri kalan her şey yüzde kodlamayla girer. Her karakter UTF-8 baytlarına çevrilir ve her bayt % artı iki onaltılık basamak olarak yazılır. Boşluk tek bayttır, bu yüzden %20 olur; é iki bayttır, %C3%A9; Türkçe ş de iki bayttır, %C5%9F; 😀 gibi bir emoji dört bayttır, %F0%9F%98%80. Çözme işlemi süreci tersine çevirir.

Türkçe karakterler de bu kurala girer: ç, ğ, ı, ö, ş ve ü ASCII dışıdır ve her biri iki UTF-8 baytı olarak kodlanır; örneğin ç için %C3%A7, ğ için %C4%9F, ı için %C4%B1. Tarayıcılar Türkçe harfli bir adresi çoğu zaman adres çubuğunda okunur gösterir ama sunucuya kodlanmış gönderir; bu aracı, bir linkin gerçekte nasıl gittiğini görmek için kullanabilirsiniz.

Kurallar, URI sözdizimini tanımlayan standart olan RFC 3986, bölüm 2’den gelir (İngilizce). Büyük harfli onaltılık basamakları önerir (%3a değil, %3A), metnin önce UTF-8 baytlarına kodlanması gerektiğini söyler ve uygulamaların aynı dizeyi birden fazla kez yüzde kodlamaması ya da çözmemesi gerektiği konusunda uyarır.

Ayrılmış ve ayrılmamış karakterler (RFC 3986)

RFC 3986, bir URL’nin içerebileceği karakterleri iki gruba ayırır:

  • Ayrılmamış: A–Z a–z harfleri, 0–9 rakamları ve - . _ ~. Bunların kodlanması hiçbir zaman gerekmez ve kodlu ya da kodsuz aynı anlama gelir.
  • Ayrılmış: genel sınırlayıcılar : / ? # [ ] @ ve alt sınırlayıcılar ! $ & ' ( ) * + , ; =. Bunlar yapı taşıyabilir; bu yüzden biri URL sözdiziminin değil verinizin parçasıysa yüzde kodlanmalıdır.

Geri kalan her şey (boşluklar, % işaretinin kendisi, tırnaklar, açılı parantezler ve her ASCII dışı karakter) bir URL’de olduğu gibi kullanılamaz ve her zaman kodlanması gerekir. En yaygın olanlar:

KarakterKodlanmışNeden önemli
boşluk%20 (form verisinde +)URL’lerde hiç izin verilmez
&%26Yeni bir sorgu parametresi başlatırdı
=%3DParametre adını değerinden ayırırdı
?%3FSorgu dizesini başlatırdı
#%23Kendisinden sonrasını sunucuya hiç gönderilmeyen parçaya (fragment) çevirirdi
/%2FFazladan bir yol parçası oluştururdu
+%2BForm olarak kodlanmış sorgu dizelerinde boşluk diye okunur
%%25Bir kaçış dizisinin başlangıcı diye okunurdu
: @%3A %40Şemayı, kimlik bilgilerini ve ana makineyi ayırır
é%C3%A9ASCII dışı; iki UTF-8 baytı olarak kodlanır

Bileşen, tam URL, RFC 3986 veya form: hangisi kullanılmalı

Aynı girdi, sonucun nereye gideceğine göre farklı kodlanır. Tom & Jerry's (2024)/ü girdisi için:

  • Bileşen Tom%20%26%20Jerry's%20(2024)%2F%C3%BC verir. Bu, JavaScript’in encodeURIComponent işlevidir; harfler, rakamlar ve - _ . ! ~ * ' ( ) dışındaki her şeyi kodlar. Tek bir sorgu değeri, tek bir yol parçası ya da başka bir URL’nin parametresinin içine koyduğunuz bir URL (örneğin bir yönlendirme hedefi) için kullanın.
  • Katı RFC 3986 Tom%20%26%20Jerry%27s%20%282024%29%2F%C3%BC verir. encodeURIComponent dokunmasa da RFC 3986’nın alt sınırlayıcı olarak ayırdığı ! ' ( ) * karakterlerini de kodlar. Katı bir ayrıştırıcı ya da istek imzalama düzeni tam olarak RFC kümesini bekliyorsa kullanın.
  • Form Tom+%26+Jerry%27s+%282024%29%2F%C3%BC verir. WHATWG URL standardının application/x-www-form-urlencoded biçimini izler (İngilizce): yalnızca harfler, rakamlar ve * - . _ olduğu gibi bırakılır, boşluk + olur. Bir HTML formunun ve URLSearchParams’ın gönderdiği biçim budur.
  • Tam URL Tom%20&%20Jerry's%20(2024)/%C3%BC verir. Bu encodeURI’dir; ; / ? : @ & = + $ , # karakterlerine dokunmaz, çünkü bunların tam bir URL’de zaten görevlerini yaptığını varsayar. Yalnızca boşluk ya da ASCII dışı metin içeren tam bir adresi düzeltmek için kullanın. Bir değer için asla kullanmayın: değerin içindeki bir & sessizce yeni bir parametre başlatır.

%20 mi +: URL’lerde boşluklar

İki kural yan yana yaşar. RFC 3986’nın URL sözdiziminde boşluk her zaman %20’dir ve + yalnızca bir artı işaretidir. Tarayıcıların bir formu GET ile gönderirken kullandığı form kodlamasında ise boşluk + olarak yazılır ve bu biçimin WHATWG ayrıştırıcısı yüzde çözmeden önce her + işaretini boşlukla değiştirir. Yani ?q=a+b bir form verisi ayrıştırıcısı için “a b” anlamına gelirken, bir yoldaki /a+b “a+b” anlamına gelir.

Çözücüde + işaretini boşluk say seçeneğinin bulunmasının nedeni budur. Formların, arama kutularının ve çoğu analiz aracının ürettiği sorgu dizeleri için işaretleyin. Yollar ve artının gerçek olduğu değerler için, örneğin name%2Btag%40example.com olarak kodlanan name+tag@example.com gibi bir e-posta adresi için kapalı bırakın.

Aynı şey kodda

  • JavaScript: değerler için encodeURIComponent() ve decodeURIComponent(), tam URL’ler için encodeURI(), + boşluklu form tarzı sorgu dizeleri için URLSearchParams (bkz. MDN).
  • Python: urllib.parse.quote() yollar için / işaretini varsayılan olarak kodlamaz ve boşlukları %20 yazar; quote_plus() form değerleri için / işaretini kodlar ve boşlukları + yazar (bkz. Python belgeleri).
  • PHP: rawurlencode() RFC 3986’yı izler ve boşlukları %20 yazar; urlencode() boşlukları + yazar (bkz. PHP kılavuzu).

Sık görülen URL kodlama sorunları

Çift kodlama: %20 yerine %2520

Bir URL’de %2520, %253A ya da benzeri bir şey varsa, zaten kodlanmış bir dize bir kez daha kodlanmıştır; %25 kodlanmış yüzde işaretidir. Bir kez çözün ve sonuca bakın. Çözülmüş sonuçta hâlâ yüzde dizileri varsa araç sizi uyarır ve Sonucu girdi olarak kullan bir sonraki katmanı çözmenizi sağlar. Kodda çözüm, her değeri tam olarak bir kez, URL’yi oluşturduğunuz anda kodlamaktır.

“Malformed URI sequence” hataları

Katı çözücüler, ardından iki onaltılık basamak gelmeyen bir % işaretini ve geçerli UTF-8 olmayan bayt dizilerini reddeder. Bu çözücü ise esnektir: geçerli her diziyi çözer, başıboş bir % işaretini olduğu gibi bırakır, geçersiz baytları � yerine koyma karakteriyle değiştirir ve bunu yaptığını söyler; böylece hiçbir şey almak yerine bozuk noktayı bulabilirsiniz.

# veya & işaretinde kesilen değer

Bir parametre kesik geliyorsa, değer kodlanmamış bir # veya & içeriyordur; genellikle URL dize birleştirmeyle ya da Tam URL kodlamasıyla oluşturulduğu için. Değeri Bileşen kipinde kodlayın.

Tam bir URL’yi kodlamak onu bozar

Tam bir URL’yi Bileşen kipinden geçirmek https:// ifadesini https%3A%2F%2F yapar. Bu yalnızca URL, başka bir URL’nin içinde bir parametre değeriyse doğrudur. Aksi hâlde yalnızca eklediğiniz kısmı kodlayın ya da Tam URL kipini kullanın.

İlgili URL araçları

Eksiksiz kampanya bağlantıları için UTM oluşturucuyu, izleme parametrelerini temizlemek için URL temizleyiciyi, bir bağlantının attığı her adımı görmek için yönlendirme kontrolünü kullanın. Bir betiği tek tıkla çalışan tarayıcı yer imine çevirmek için bookmarklet oluşturucu onu sizin yerinize yüzde kodlar. RFC gibi başvuru sayfalarını çalışırken kaydediyorsanız Marqly onları aranabilir tek bir kütüphanede tutar; bkz. geliştiriciler için Marqly (İngilizce).

Sıkça Sorulan Sorular

URL kodlama ne işe yarar?

Bir URL içinde güvensiz olan ya da özel anlamı bulunan karakterleri, her UTF-8 baytı için bir yüzde işareti ve iki onaltılık basamakla değiştirir. Boşluk %20, & işareti %26, é harfi %C3%A9 olur. Böylece her metin, URL’nin kendi yapısıyla karışmadan bir URL içinde taşınabilir.

encodeURI ile encodeURIComponent arasındaki fark nedir?

encodeURIComponent; harfler, rakamlar ve - _ . ! ~ * ' ( ) dışındaki her şeyi kodlar, bu yüzden tek bir sorgu değeri ya da yol parçası için doğru seçimdir. encodeURI ise ; / ? : @ & = + $ , # karakterlerine dokunmaz; çünkü ona tam ve zaten yapılandırılmış bir URL verdiğinizi varsayar. Değerler için Bileşen kipini, yalnızca tam adresler için Tam URL kipini kullanın.

Boşluk %20 mi olmalı, + mı?

İkisi de farklı yerlerde doğrudur. %20 bir URL’nin her yerinde çalışır. + işareti ise yalnızca form olarak kodlanmış sorgu dizelerinde (application/x-www-form-urlencoded) boşluk anlamına gelir; HTML formlarının ve URLSearchParams’ın ürettiği biçim budur. Bir yolda + işareti düz bir artı işaretidir. Bir formdan gelen sorgu dizesini çözerken “+ işaretini boşluk say” seçeneğini işaretleyin.

URL’mde neden %2520 var?

İki kez kodlanmış demektir. İlk geçiş boşluğu %20 yaptı; ikinci geçiş % işaretinin kendisini %25 olarak kodladı ve %2520 çıktı. RFC 3986, aynı dizenin birden fazla kez kodlanmaması veya çözülmemesi gerektiğini söyler. Bir kez çözün ve %20’ye dönüp dönmediğine bakın, sonra gerekirse yeniden çözün.

Birçok URL’yi aynı anda kodlayabilir veya çözebilir miyim?

Evet. Satır başına bir değer yapıştırın ve “Satır başına bir değer” seçeneğini işaretli bırakın. Her satır ayrı ayrı kodlanır veya çözülür; satır sonları %0A’ya dönüşmek yerine korunur.

Hangi karakterlerin kodlanması gerekir?

Bir değerin parçasıysa (URL’nin yapısının parçası değilse), RFC 3986’nın ayrılmamış kümesinin (harfler, rakamlar, tire, nokta, alt çizgi, yaklaşık işareti) dışındaki her şey kodlanmalıdır. Buna boşluklar, ASCII dışı harfler (ç, ğ, ı, ö, ş, ü gibi), % ve ? # & = / : @ ile + gibi ayrılmış sınırlayıcılar dahildir.

Metnim yükleniyor mu?

Hayır. Kodlama, çözme ve sorgu dizesi dökümü, tarayıcınızdaki yerleşik JavaScript işlevleriyle çalışır. Hiçbir şey sunucuya gönderilmez.

← Ücretsiz araçlar

Ana Sayfa · Marqly