Bir URL yalnızca sınırlı bir karakter kümesini (İngilizce harfler, rakamlar ve birkaç ayrılmamış sembol) doğrudan taşıyabilir. Boşluk, Türkçe harfler (ç, ğ, ı, ö, ş, ü), emoji ve & ? # % + = gibi ayrılmış (reserved) karakterler URL yapısını bozacağından, önce yüzde kodlaması (percent-encoding) ile %XX biçimine çevrilmeleri gerekir. Bu işleme kısaca URL encode, tersine ise URL decode denir.
encodeURIComponent ile encodeURI arasındaki fark nedir?
& = ? / : # gibi URL yapısını oluşturan karakterleri de kodlar — bu yüzden query parametresi değerlerinde bu fonksiyon kullanılmalıdır. encodeURI() ise TAM bir adresi kodlamak içindir; adresin çalışması için gerekli : / ? # & = karakterlerini olduğu gibi bırakır.- encodeURIComponent("a&b=c") →
a%26b%3Dc(& ve = de kodlanır — bir parametre DEĞERİ için doğru kullanım) - encodeURI("https://x.com/a b?c=1&d=2") →
https://x.com/a%20b?c=1&d=2(yalnızca boşluk kodlanır, URL yapısı korunur)
Türkçe karakterler ve emoji URL'de nasıl kodlanır?
%XX olarak yazılır. Örneğin ş harfi 2 baytlıktır ve %C5%9F olur; 4 baytlık bir emoji ise 4 ayrı %XX grubuna dönüşür. Bu dönüşümü elle hesaplamaya gerek yoktur — encodeURIComponent() otomatik yapar.| Karakter | Anlamı | Kodlanmış hali |
|---|---|---|
| (boşluk) | Boşluk karakteri | %20 (form'da +) |
| ş | Türkçe ş | %C5%9F |
| ı | Türkçe ı (noktasız i) | %C4%B1 |
| ğ | Türkçe ğ | %C4%9F |
| & | Parametre ayıracı | %26 |
| = | Anahtar-değer ayıracı | %3D |
| ? | Query başlangıcı | %3F |
| # | Fragment/çapa başlangıcı | %23 |
| % | Yüzde işaretinin kendisi | %25 |
| 🚀 | Emoji (4 baytlık UTF-8) | %F0%9F%9A%80 |
Query string nasıl oluşturulur ve parçalanır?
? işaretinden sonra gelen ve & ile ayrılan anahtar=değer çiftleridir. Yukarıdaki "Query Oluştur" sekmesine anahtar-değer çiftlerini girip değerleri otomatik ve doğru biçimde kodlanmış bir query string üretebilir; "Query Parçala" sekmesine ise mevcut bir URL yapıştırıp tüm parametreleri okunabilir bir tabloya çevirebilirsiniz. Araç ayrıca utm_source, gclid, fbclid gibi bilinen izleme (tracking) parametrelerini otomatik işaretler.Base64 encode/decode, URL encoding'den nasıl farklıdır?
+ ve / içerdiğinden, bir URL parametresine konacaksa ayrıca encodeURIComponent() ile de kodlanması gerekebilir — aşağıdaki mini araçlar bölümünde ikisini birden deneyebilirsiniz.