URL Encode ve Decode Nedir? Web Rehberi ve Kullanımı
URL kodlama (percent-encoding) mantığını, özel ve Türkçe karakterlerin internet tarayıcılarındaki karşılığını ve URL Encode/Decode işlemlerinin önemini öğrenin.
- URL kodlama (percent-encoding / Yüzde Kodlama), internet adreslerinde kabul edilmeyen özel veya ASCII dışı karakterleri güvenli veri formatına dönüştürür.
- RFC 3986 standardına göre URL mimarisinde karakterler "ayrılmış" (reserved) ve "ayrılmamış" (unreserved) olarak iki ana gruba ayrılır.
- Türkçe karakterler (ç, ğ, ı, ö, ş, ü) ve boşluk simgesi gibi ögeler
%HEXformatında 16'lık düzende kodlanarak sunucuya iletilir.- Web API isteklerinde ve sorgu parametrelerinde (query parameters) veri kaybını önlemek için kodlama yapmak zorunludur.
İnternet dünyasında istemciler (tarayıcılar) ile sunucular arasındaki veri iletişimi standart URL adresleri üzerinden gerçekleşir. Bir web adresine girdiğimizde veya bir arama formuna sorgu yazdığımızda, girilen metinlerin ve parametrelerin sorunsuz bir şekilde sunucuya ulaşması beklenir. Bu iletim sürecinin son derece güvenli, kayıpsız ve standartlara uygun biçimde gerçekleşmesini sağlayan temel mekanizma URL Encoding (Yüzde Kodlama) ve bunun tersi olan URL Decoding işlemidir.
URL Encoding (Yüzde Kodlama) Nedir ve Nasıl Çalışır?
URL Encoding, Evrensel Kaynak Belirteçlerinde (URI/URL) kullanılmasına izin verilmeyen veya özel bir anlam taşıyan karakterlerin, % sembolünü takip eden iki haneli onaltılık (hexadecimal) ASCII kodlarına dönüştürülmesidir. Bu standart RFC 3986 teknik dokümanı ile tanımlanmıştır.
İnternet mimarisi kurulurken URL adresi içinde sadece belirli ASCII karakterlerinin ham halleriyle yer almasına izin verilmiştir. Diğer tüm karakterler sunucuya gönderilmeden önce kodlanmak zorundadır.
Karakter grupları temel olarak ikiye ayrılır:
- Ayrılmamış Karakterler (Unreserved): Kodlanması gerekmeyen alfanümerik karakterlerdir (
A-Z,a-z,0-9,-,_,.,~). - Ayrılmış Karakterler (Reserved): URL yapısında sözdizimsel anlamı olan karakterlerdir (
:,/,?,#,[,],@,!,$,&,',(,),*,+,,,;,=).
Örneğin bir sorgu parametresinde geçen boşluk karakteri %20 veya + işareti olarak kodlanırken, Türkçe ş harfi UTF-8 bayt dizilimine göre %C5%9F şeklinde ifade edilir.
Tüm metin ve bağlantı adreslerinizi anında kodlamak veya çözmek için URL Encoder Decoder aracını kullanabilirsiniz.
Yaygın Karakterlerin URL Kodlama Karşılıkları
İnternet trafiğinde sıklıkla karşılaşılan karakterler ve bunların percent-encoding karşılıkları aşağıdaki tabloda özetlenmiştir:
| Karakter | Tanımı / Türü | URL Encode Karşılığı |
|---|---|---|
| | Boşluk (Space) | %20 veya + |
| / | Eğik Çizgi (Path Separator) | %2F |
| ? | Soru İşareti (Query String) | %3F |
| = | Eşittir (Parametre Değeri) | %3D |
| & | Ve İşareti (Parametre Ayırıcı) | %26 |
| # | Kare / Anchor (Fragment) | %23 |
| ç | Türkçe Küçük Ç | %C3%A7 |
| ğ | Türkçe Küçük Ğ | %C4%9F |
| ş | Türkçe Küçük Ş | %C5%9F |
Programlama Dillerinde URL Encoding İşlemleri
Yazılım geliştiriciler API istekleri hazırlarken veya dinamik web sayfaları kurgularken sorgu parametrelerini mutlaka kodlamalıdır. Aksi takdirde sunucu adres parametrelerini yanlış ayrıştırabilir.
Aşağıdaki JavaScript/TypeScript örneğinde encodeURIComponent ve decodeURIComponent fonksiyonlarının kullanımı detaylıca gösterilmiştir:
// Parametre içeren ham metin
const rawSearchQuery = "kategori=yazılım & teknoloji&sayfa=1";
// Hatalı kullanım parametre yapısını bozar
// Doğru kullanım: sorgu değerini kodlamak
const encodedValue = encodeURIComponent("yazılım & teknoloji");
const fullUrl = `api.example.com/search?kategori=${encodedValue}&sayfa=1`;
console.log(encodedValue);
// Çıktı: "yaz%C4%B1l%C4%B1m%20%26%20teknoloji"
console.log(fullUrl);
// Çıktı: "api.example.com/search?kategori=yaz%C4%B1l%C4%B1m%20%26%20teknoloji&sayfa=1"
// Sunucu tarafında çözme işlemi (Decoding)
const decodedValue = decodeURIComponent(encodedValue);
console.log(decodedValue); // Çıktı: "yazılım & teknoloji"
Arama motoru optimizasyonu açısından temiz ve okunabilir adres dizilimleri oluştururken SEO Uyumlu URL Rehberi yazımızdaki standartlardan faydalanabilirsiniz.
URL Encoding Neden Hayati Önem Taşır?
- Veri Bütünlüğünü Korumak: Adres satırında gönderilen verilerin içindeki
&veya=gibi ayrılmış karakterlerin URL yapısını bozmasını engeller. - Uluslararası Karakter Desteği: Türkçe, Arapça, Çince veya Kiril alfabesindeki karakterlerin UTF-8 bayt karşılıklarıyla sorunsuz aktarılmasını sağlar.
- Güvenlik (XSS ve Enjeksiyon Koruması): Kullanıcıdan alınan girdilerin adres satırı üzerinden zararlı betikler (script) çalıştırmasını önlemeye yardımcı olur.
Güvenlik Açısından Percent Encoding Önemi
Web uygulamalarında kullanıcı tarafında girilen arama ifadeleri ve URL parametreleri doğrudan sunucu tarafına iletildiğinde, kötü niyetli veri enjeksiyonlarına (Cross-Site Scripting - XSS) karşı önlem alınmalıdır. URL kodlaması yapılmayan parametreler, tırnak işaretleri ve büyüktür/küçüktür simgeleri içerdiğinde istemci tarafında kod olarak yorumlanabilir. Percent-encoding işlemi bu simgeleri %3C ve %3E gibi zararsız metin karakterlerine dönüştürerek web uygulamalarında ilave bir güvenlik katmanı oluşturur.
Ayrıca web sunucuları HTTP header veri alışverişi yaparken ve cookie bilgilerini saklarken de özel simgeleri URL Encoding kurallarına göre paketler. Bu işlem hem tarayıcı tarafında hem de sunucu tarafında veri okuma hatalarının önüne geçer.
Sıkça Sorulan Sorular
URL Encode işleminde boşluk karakteri neden bazen %20 bazen + olarak görünür?
Standart URI kodlamasında (RFC 3986) boşluk karakteri %20 ile ifade edilir. Ancak HTML form verisi gönderiminde kullanılan application/x-www-form-urlencoded medya tipinde tarihsel sebeplerle boşluk karakteri + ile temsil edilebilir.
encodeURI ile encodeURIComponent arasındaki fark nedir?
encodeURI tüm web adresini kodlamak için tasarlanmıştır ve /, ?, : gibi URL ayırıcı karakterlere dokunmaz. encodeURIComponent ise tek bir parametre değerini kodlamak için kullanılır ve tüm özel karakterleri dize dönüştürür.
URL Decode yapılmazsa veritabanına veri nasıl kaydolur?
Sunucu tarafında URL Decode işlemi unutulursa veritabanına çözülmemiş %20 veya %C5%9F gibi kodlanmış karakter dizileri kaydedilir. Bu durum veri aramalarında ve kullanıcı arayüzü gösterimlerinde hatalara yol açar.
URL Encode işlemi veri şifreleme (Encryption) yöntemi midir?
Hayır, URL Encode bir şifreleme yöntemi değildir; sadece bir format dönüştürme (encoding) işlemidir. Kodlanmış bir veri herkes tarafından kolayca geri çözülebilir.
Türkçe karakterlerin URL içinde kodlanması SEO'yu etkiler mi?
Arama motorları kodlanmış UTF-8 adresleri sorunsuz indeksler; ancak kullanıcı deneyimi açısından rehberlerimizdeki standartlara uygun slug yapısı tercih edilmelidir.