URL Encode (URL Kodlama) Nedir?
Bir arama kutusuna Türkçe bir kelime yazıp adres çubuğuna baktığınızda "%C4%B1" gibi tuhaf karakterler görmüşsünüzdür. Bu, tesadüf değil; URL encode denen ve her tarayıcının otomatik yaptığı bir dönüşümdür. Bu rehberde URL encode'un ne olduğunu, hangi karakterlerin neden kodlandığını ve nerelerde kullanıldığını örneklerle açıklıyoruz.
URL encode nedir?
& ? # % gibi ayrılmış simgeler — tarayıcıların ve sunucuların güvenle anlayacağı %XX biçimine çevirme işlemidir. Örneğin boşluk %20, "ş" harfi ise %C5%9F olur.
Bir URL yalnızca sınırlı bir karakter kümesini (İngilizce harfler, rakamlar ve birkaç sembol) doğrudan taşıyabilir. Diğer her karakter, adresin yapısını bozmadan taşınabilmesi için önce kodlanmalıdır. Kendi metninizi hemen görmek isterseniz encode aracını kullanabilirsiniz.
URL'de neden bazı karakterler sorun çıkarır?
& = ? # / gibi karakterlerin URL yapısında özel bir anlamı vardır (parametre ayırma, çapa belirleme vb.). Bu karakterler kodlanmadan bir değerin İÇİNE konursa, tarayıcı veya sunucu bunları veri değil, yapı parçası sanır ve adres yanlış ayrıştırılır.
Örneğin bir arama kutusuna tatlı & tuzlu yazıp bunu kodlamadan bir query parametresine eklerseniz, sunucu & işaretini yeni bir parametrenin başlangıcı sanır ve arama teriminiz ikiye bölünür. Aynı şekilde bir dosya adında boşluk varsa, kodlanmamış boşluk URL'yi orada keser. Bu yüzden her özel karakter, kodlanmadan bir URL'ye güvenle konamaz.
https://ornek.com/ara?q=tatlı & tuzlu — kodlanmamış bu adres, &'den sonrasını "tuzlu" adında ayrı (ve anlamsız) bir parametre gibi işler; asıl aranan "tatlı & tuzlu" ifadesi kaybolur.
Percent-encoding nasıl çalışır? (UTF-8 baytları)
%XX üretirken, çok baytlık bir Türkçe harf veya emoji birden fazla %XX grubuna dönüşür.
Bu, neden bazı harflerin uzun kodlara çıktığını açıklar. İngilizce alfabede olmayan her karakter UTF-8'de birden fazla bayt kaplar; her bayt ayrı bir yüzde-grubu üretir:
| Karakter | UTF-8 bayt sayısı | Kodlanmış hali |
|---|---|---|
| (boşluk) | 1 bayt | %20 |
| a, 5, - | kodlanmaz | değişmez |
| ş (Türkçe ş) | 2 bayt | %C5%9F |
| ğ (Türkçe ğ) | 2 bayt | %C4%9F |
| € (euro işareti) | 3 bayt | %E2%82%AC |
| 🚀 (emoji) | 4 bayt | %F0%9F%9A%80 |
Kaynak: UTF-8 karakter kodlama standardı (RFC 3629) + RFC 3986 percent-encoding kuralları.
encodeURIComponent("ş") yazıp çalıştırmanız yeterli — tarayıcı UTF-8 ve yüzde kodlamasını otomatik yapar. Kendi metninizi bu araçta test edebilirsiniz.
Hangi karakterler ayrılmış (reserved), hangileri güvenli (unreserved)?
- _ . ~ — asla kodlanmaz. Reserved (ayrılmış) karakterler — : / ? # [ ] @ ! $ & ' ( ) * + , ; = — URL yapısında özel anlam taşıdığından, bir değerin İÇİNDE kullanılacaklarsa kodlanmalıdır.
| Sınıf | Karakterler | Bir değer içinde kodlanır mı? |
|---|---|---|
| Unreserved | A-Z a-z 0-9 - _ . ~ | Hayır, hiçbir zaman |
| Reserved | : / ? # & = + , ; | Evet, bir parametre değeriyse |
| Diğer her şey | Boşluk, Türkçe harf, emoji, ", <, % | Evet, her zaman |
Kendi metnini şimdi kodla
Türkçe karakter, emoji veya özel simge içeren metnini yapıştır; encodeURIComponent veya encodeURI ile anında kodla.
URL Encode Aracını Aç →URL encode ne zaman kullanılır?
- Query parametre değeri: Arama kutusundan gelen serbest metni (
?q=...) URL'ye eklerken. - Form gönderimi: HTML formlarının varsayılan biçiminde her alan encode edilir; boşluk genelde
+olur. - API istekleri: REST API'lere path/query parametresi olarak dinamik değer (kullanıcı adı, e-posta) gönderirken.
- Paylaşılabilir bağlantılar: Bir filtre veya arama terimini URL'de saklayıp paylaşılabilir hale getirirken.
- Yönlendirme (redirect) URL'leri: Bir sayfanın "geri dönüş adresi" query parametresi olarak taşınırken.
Encode edilmiş bir metni geri okunabilir hale getirmek için ise tersi işlem olan URL decode kullanılır. İki fonksiyon arasındaki en sık karıştırılan ayrımı — encodeURIComponent ile encodeURI farkını — bir sonraki rehberde detaylı inceliyoruz.
Sık sorulan sorular
URL encode nedir?
Hangi karakterler URL'de kodlanmaya ihtiyaç duyar?
& = ? # % + / : , gibi ayrılmış (reserved) karakterler kodlanır. Sadece İngilizce harfler, rakamlar ve - _ . ~ karakterleri (unreserved) her zaman kodlamadan güvenle kullanılabilir.URL encode ile URL decode arasındaki fark nedir?
encodeURIComponent()/encodeURI(), decode için decodeURIComponent()/decodeURI() kullanılır.Türkçe karakterler URL encode'da neden 6 karaktere çıkıyor?
%XX grubu ürettiğinden tek harf 6 karaktere (örn. ş → %C5%9F) çıkar.URL encode yapmazsam ne olur?
& ve = bir değerin içinde kodlanmazsa parametre sınırları karışır.İlgili rehberler
encodeURIComponent()/encodeURI() fonksiyonları çalıştırılarak doğrulanmıştır. Kaynaklar: RFC 3986 · RFC 3629 (UTF-8) · WHATWG URL Standardı · MDN Web Docs. Son güncelleme: 17 Temmuz 2026. Bilgilendirme amaçlıdır; üretim kodunuzda kullanmadan önce kendi ortamınızda test edin.