URL Kodlama ve Çözme
Adresleri ve form değerlerini yüzde kodlamasıyla kodlayın veya çözün
Verileriniz sizde kalır. Dönüşüm tarayıcının içinde yapılır, hiçbir şey sunucuya gitmez.
Bu araç işinizi gördü mü?
Teşekkürler, geri bildiriminiz alındı.
Nasıl çalışır?
Sol panele metni yapıştırın; her satır ayrı ele alınır, böylece birden çok adresi tek seferde işleyebilirsiniz. Önce yönü, sonra kapsamı seçin — bu ikinci seçim sonucun doğruluğunu belirler. Bileşen kipi tek bir değeri kodlar: iki nokta, eğik çizgi, soru işareti, ve işareti ve eşittir dahil her ayraç kodlanır, çünkü o değerin içindeki bir eğik çizgi yol ayracı değil, veridir. Tam adres kipi ise adresin bütününü kodlar ve bu ayraçlara dokunmaz; yalnızca boşluk, Türkçe harfler ve benzeri güvensiz karakterler yüzde dizisine çevrilir. Çözme yönü de aynı ayrımı korur. Bozuk bir yüzde dizisi bulunursa (örneğin %ZZ ya da satır sonunda yarım kalmış %A) kaçıncı satırın kaçıncı karakterinde olduğu söylenir; yüzde dizileri geçerli ama geçerli bir UTF-8 karakteri oluşturmuyorsa bu da ayrıca bildirilir. Çıktıyı tek tıkla kopyalayabilir veya metin dosyası olarak indirebilirsiniz.
Bu araç url kodlama, url decode, url encode aramalarıyla da biliniyor.
Yüzde kodlaması (percent-encoding) nedir?
Yüzde kodlaması, adreslerde doğrudan yazılamayan karakterleri yüzde işareti ve iki onaltılık basamakla temsil eden yöntemdir: boşluk %20, soru işareti %3F olur. Adres standardı yalnızca sınırlı bir karakter kümesine izin verir, çünkü kalanlar ya ayraç görevi taşır (/, ?, &, =) ya da farklı sistemlerde farklı yorumlanır. Kodlama karakterlere değil baytlara uygulanır: metin önce UTF-8'e çevrilir, her bayt ayrı bir yüzde dizisi olur. Bu yüzden iki bayt tutan 'ğ' harfi tek değil çift dizi üretir ve kodlanmış adres beklediğinizden uzun görünür.
Sorgu dizesi (query string) nedir?
Sorgu dizesi, adresin soru işaretinden sonra gelen ve sunucuya parametre taşıyan bölümüdür: ?q=plan&sayfa=2 kalıbında ve işareti parametreleri, eşittir işareti ad ile değeri ayırır. Ayraç görevi taşıyan bu iki işaret bir DEĞERİN içinde geçtiğinde kodlanmak zorundadır; yoksa sunucu tek parametreyi ikiye böler ve arama sonucu boş döner. Bu yüzden sorgu değerleri bileşen kipiyle, adresin bütünü ise tam adres kipiyle kodlanır — bu aracın iki kapsam seçeneğinin sebebi tam olarak budur.
Bileşen kodlaması ile tam adres kodlaması arasındaki fark nedir?
İkisi de aynı yüzde kodlamasını uygular; ayrıldıkları nokta ayraçlara ne olduğudur. Bileşen kipi adresi tanımayan bir kiptir: metne bakar ve : / ? # & = gibi ayraçlar dahil güvenli olmayan her karakteri kodlar, çünkü bu metin bir adresin PARÇASI olacaktır ve içindeki eğik çizgi yol ayracı değil veridir. Tam adres kipi ise elindeki metni zaten bir adres kabul eder; ayraçları yapının kendisi sayıp korur, yalnızca boşluk ve Türkçe harf gibi güvensiz karakterleri çevirir. Pratik sonuç: form değerini ve sorgu parametresini bileşen kipiyle, elinizde hazır duran bozuk bir adresi tam adres kipiyle işleyin. Kipi karıştırmak ya adresi kullanılamaz bir metne dönüştürür ya da parametrenin ortasında ayraç bırakıp veriyi böler.
En sık yapılan hata: tam adresi bileşen kipiyle kodlamak
Bir adresin tamamını bileşen kipiyle kodlarsanız 'https://ornek.com/yol' dizesi 'https%3A%2F%2Fornek.com%2Fyol' olur. Bu çıktı bozuk değildir — yalnızca artık bir adres değil, adresi METİN olarak taşıyan bir değerdir. Tarayıcının adres çubuğuna yapıştırırsanız açılmaz.
Kural basit: adresin BİR PARÇASINI mı kodluyorsunuz, yoksa adresin BÜTÜNÜNÜ mü? Arama kutusuna yazılan 'şehir plan' metnini q parametresine koyacaksanız bileşen kipi doğrudur. Elinizde boşluk içeren hazır bir adres varsa ve onu geçerli hâle getirmek istiyorsanız tam adres kipi doğrudur.
Hangi karakterler kodlanır, hangileri olduğu gibi kalır?
Her iki kipte de harfler, rakamlar ve - _ . ! ~ * ' ( ) işaretleri olduğu gibi kalır. Boşluk her zaman %20 olur; Türkçe harfler UTF-8 baytlarına çevrilip her bayt ayrı bir yüzde dizisiyle yazılır, bu yüzden tek bir 'ş' harfi %C5%9F gibi iki diziye karşılık gelir.
- Bileşen kipinde kodlanan ayraçlar: : / ? # [ ] @ ! $ & ' ( ) * + , ; = (yani neredeyse hepsi)
- Tam adres kipinde korunan ayraçlar: : / ? # [ ] @ & = + $ , ;
- Bir sorgu parametresinin değerinde & veya = geçiyorsa bileşen kipi şarttır; yoksa parametre ikiye bölünür
- Yol parçasında eğik çizgi geçen bir dosya adı da bileşen kipiyle kodlanmalıdır
Türkçe adresler ve tarayıcıda görünen hâli
Modern tarayıcılar adres çubuğunda yüzde dizilerini çözüp okunur hâlde gösterir; bu yüzden 'ornek.com/şehir-planı' düzgün görünse de sunucuya giden istekte adres kodlanmış hâldedir. Bağlantıyı kopyalayıp bir e-postaya ya da mesaja yapıştırdığınızda ise çoğu zaman kodlanmış uzun hâli çıkar.
Bir bağlantının neden bozuk göründüğünü anlamak için çözme yönünü kullanabilirsiniz: uzun ve okunmaz adresi yapıştırıp hangi parametrenin ne taşıdığını görebilirsiniz.
Yüzde kodlama tablosu: hangi karakter neye dönüşür?
Aşağıdaki karşılıklar adres standardından (RFC 3986) gelir ve değişmez: her karakter, yüzde işareti ve o karakterin UTF-8 değerini gösteren iki onaltılık basamakla yazılır. Boşluk %20 olur, çünkü adreste boşluğa hiç yer yoktur; geri kalanlar ayraç görevi taşıdığı için kodlanır — bir sorgu değerinin içindeki ve işareti kodlanmazsa sunucu orada yeni bir parametre başladığını sanır.
Listedeki değerler bileşen kipinin ürettiği sonuçtur. Tam adres kipinde aynı karakterler adresin yapısını kurduğu için olduğu gibi bırakılır; hangisinin nerede doğru olduğunu yukarıdaki bölüm anlatıyor. Harfler, rakamlar ve dört işaret (tire, nokta, alt çizgi, tilde) standartta "ayrılmamış" sayılır ve hiçbir kipte kodlanmaz.
Yani tablo bir ezber listesi değil, kontrol listesidir: elinizdeki bozuk bağlantıda hangi karakterin kodlanmamış kaldığını ya da yanlış çözüldüğünü buradan bakarak bulabilirsiniz.
- boşluk → %20
- ! → %21
- " (çift tırnak) → %22
- # → %23
- $ → %24
- % (yüzde işaretinin kendisi) → %25
- & → %26
- ' (tek tırnak) → %27
- ( → %28 ve ) → %29
- * → %2A
- + → %2B
- , (virgül) → %2C
- / → %2F
- : → %3A
- ; → %3B
- = → %3D
- ? → %3F
- @ → %40
- [ → %5B ve ] → %5D
- satır sonu → %0A, sekme → %09
- Kodlanmayanlar: A-Z, a-z, 0-9 ve dört işaret — tire ( - ), nokta ( . ), alt çizgi ( _ ), tilde ( ~ )
- Türkçe harfler iki bayt tuttuğu için çift dizi olur: ç → %C3%A7, ö → %C3%B6, ü → %C3%BC, ı → %C4%B1, ğ → %C4%9F, ş → %C5%9F
Sık sorulanlar
Boşluk %20 mi olmalı, + mı?
Adresin yol kısmında boşluk her zaman %20 olur. Artı işareti yalnızca HTML formlarının gönderdiği sorgu dizesinde boşluk sayılır; bu eski bir uzlaşımdır. Bu araç her iki kipte de %20 üretir, çünkü %20 her yerde doğru okunur.
Türkçe harf içeren adres geçerli midir?
Adresin yol ve sorgu kısmında Türkçe harf kullanılabilir; sunucuya giderken UTF-8 baytları yüzde dizilerine çevrilir. Alan adı kısmı farklı çalışır: orada punycode adı verilen ayrı bir dönüşüm geçerlidir ve bu araç alan adına dokunmaz.
Bir adresi iki kez kodlarsam ne olur?
Yüzde işaretinin kendisi de kodlanır ve %20 dizesi %2520 olur. Bu, bağlantı bozulmalarının klasik sebebidir. Emin değilseniz önce çözme yönünü çalıştırın: çıktı hâlâ yüzde dizileri içeriyorsa metin iki kez kodlanmış demektir.
Yapıştırdığım adresler bir yere gönderiliyor mu?
Hayır. Kodlama ve çözme tarayıcınızın içinde yapılır; oturum belirteci ya da parametre içeren bir adres yapıştırsanız bile veri bu sayfadan çıkmaz.
% işaretinin kendisi nasıl yazılır?
Yüzde işareti %25 olur. Bu istisna değil, kuralın gereğidir: yüzde işareti kodlamanın başlangıç işareti olduğu için metnin içinde geçtiğinde mutlaka kodlanmalıdır, yoksa arkasından gelen iki karakter yanlışlıkla onaltılık basamak sanılır. Çözme yönünde ise ters işlem yapılır ve %25 dizisi tekrar tek bir yüzde işaretine döner.