URL Yüzde Kodlaması: URL'ler Neden Boşlukları %20 ile Değiştiriyor (RFC 3986 Kılavuzu)

URL'ler katı bir ASCII karakter kümesiyle sınırlıdır. Özel karakterlerin (boşluklar, aksanlar, ve işaretleri, eğik çizgiler) internet üzerinden güvenli bir şekilde iletilebilmesi için yüzde kodlu diziler halinde kodlanması gerekir (örn. boşluk = %20).

URL containing special characters being encoded to percent-encoded safe format

URL'lerin Neden Özel Karakter Kodlamasına İhtiyacı Var

Comparison between RFC 3986 percent-20 and application-form-urlencoded plus encoding for spaces

URL'ler, HTTP protokolü kullanılarak ağlar üzerinden iletilir. HTTP spesifikasyonu (ve onun öncülü olan internet protokolü standartları), URL'leri US-ASCII karakterlerinden oluşan bir alt kümeyle, özellikle de bayt değerleri 0x21 ile 0x7E arasında olan karakterlerle sınırlar.

Bu aralığın dışındaki karakterler (boşluklar, aksanlı karakterler (é, ñ, ü), Çince/Japonca/Korece karakterler ve birçok simge dahil) kodlamasız URL'lerde güvenli değildir.

Neden özellikle boşluk bırakalım? HTTP, istek satırında yöntem, URL ve protokol sürümü arasında sınırlayıcı olarak boşlukları kullanır:

GET /search?q=hello world HTTP/1.1

Sunucu, "merhaba"yı URL'nin sonu olarak ve "dünya"yı HTTP sürüm dizesinin geçersiz bir parçası olarak görüyor. URL bozuk.

Çözüm: Yüzde kodlama (RFC 3986'da tanımlanmıştır), güvenli olmayan karakterleri güvenli bir %XX notasyonuna dönüştürür; burada XX, onaltılık bayt değeridir.


Yüzde Kodlama Nasıl Çalışır?

JavaScript URL encoding API difference between encodeURI and encodeURIComponent functions

Hexadecimal ASCII byte lookup table for the eight most frequently encoded URL special characters

UTF-8'deki her karakter bir ila dört bayttır. Yüzde kodlaması, her baytı % ve ardından iki onaltılık rakama dönüştürür:

KarakterUTF-8 BaytYüzde Kodlanmış
Boşluk0x20%20
#0x23%23
&0x26%26
=0x3D%3D
/0x2F%2F
é0xC3 0xA9%C3%A9
中0xE4 0xB8 0xAD%E4%B8%AD

https://example.com/搜索 gibi Çince karakterler içeren bir URL şu şekilde olur: https://example.com/%E6%90%9C%E7%B4%A2


Ayrılmış Karakterler ve Ayrılmamış Karakterler

Reserved versus unreserved URL character set comparison showing characters that must be percent-encoded

Ayrılmamış karakterler (bunları asla kodlamayın): A-Z a-z 0-9 - _ . ~ Bunlar tüm URL bağlamlarında güvenlidir ve her zaman kodlanmamış görünmelidir.

Ayrılmış karakterler (sınırlayıcı olarak değil, veri olarak kullanıldığında kodlayın): : / ? # [ ] @ ! $ & ' ( ) * + , ; = Bu karakterlerin URL'lerde özel anlamı vardır. Bir sorgu parametresi değerinde gerçek veri olarak göründüklerinde bunları kodlayın.

Örnek — arama sorgusu URL'si:

https://example.com/search?q=cats&dogs

Bu belirsiz; sorgu "kediler" mi yoksa "kediler ve köpekler" mi? Kodlamayla:

https://example.com/search?q=cats%26dogs

Artık ve işareti sorgu parametresi ayırıcısı olarak değil veri olarak kodlanıyor.


ToolDolfen'de URL'leri Kodlama ve Kod Çözme

ToolDolfen in-browser URL encoder and decoder client-side execution workflow

  1. URL Kodlayıcı ve Çözücü (URL Encoder) açın.
  2. Kodlamak için: Özel karakterler içeren bir URL veya URL bileşeni yapıştırın. Kodla'yı tıklayın.
  3. Kodu çözmek için: İnsanların okuyabileceği orijinali görmek için yüzde olarak kodlanmış bir URL veya dize yapıştırın.

Araç hem tam URL'leri hem de URL bileşenlerini (bireysel sorgu parametresi değerleri) yönetir. Tam URL kodlaması için yalnızca ayrılmamış karakterler kodlanır; bileşen kodlaması için ayrılmış karakterler de kodlanır.

Önerilen Yardımcı Kılavuzlar

Dijital iş akışınızı geliştirmek için bu konu kümesindeki tamamlayıcı eğitimleri ve yardımcı programları keşfedin:

HEX, RGB ve HSL: CSS ve Tasarım için Tam Renk Modelleri Kılavuzu]Doğrulanmış standartlar ve tarayıcı içi ile pratik, adım adım eğitim iş akışları.Güçlü Şifrelerin Matematiği: Entropi, NIST Yönergeleri ve Şifre UzunluğuDoğrulanmış standartlar ve tarayıcı içi ile pratik, adım adım eğitim iş akışları.HTML Dönüştürücü Kılavuzuna İşaretleme: GFM Tabloları, Matematik ve Gerçek Dünya YakalamalarıDoğrulanmış standartlar ve tarayıcı içi ile pratik, adım adım eğitim iş akışları.PDF Dosyaları Nasıl Bölülür ve Belirli Sayfa Aralıkları Çıkarılırİlgili verileri ve medyayı birbirine bağlayan tamamlayıcı çapraz formatlı iş akışı araçlar.
Önerilen Yardımcı Program: URL Kodlayıcı / Kod ÇözücüBu iş akışını, sıfır sunucu yüklemesi ve %100 istemci tarafı gizlilik ile tarayıcınızda canlı olarak yürütün.
URL Kodlayıcı ve Çözücü (URL Encoder)
URL Kodlayıcı ve Çözücü (URL Encoder)

Sıkça Sorulan Sorular

Bu iş akışıyla ilgili yaygın sorulara hızlı ve doğrulanmış yanıtlar bulun.

URL'lerdeki boşluklar için %20 ile + arasındaki fark nedir?

%20, URL'lerdeki bir alan için RFC 3986 standart yüzde kodlamasıdır. + işareti, sorgu parametrelerindeki boşluklar için eski bir HTML form kodlama kuralıdır (application/x-www-form-urlencoded). +, sorgu dizelerinde yaygın olarak desteklenirken, %20 evrensel olarak daha doğrudur ve URL yolları için önerilir.

Bir URL'de asla kodlanmaması gereken karakterler var mı?

Evet. Ayrılmamış karakterler (A-Z, a-z, 0-9, -, _, ., ~) asla kodlanmamalıdır; bunlar tüm URL bağlamlarında güvenlidir. Ayrılmış karakterler (/, ?, #, &, =, @, !, $), işlevsel rollerini yerine getirirken (örneğin, yol bölümlerini / ayırarak) kodlanmamalıdır.

URL'mi özel karakterlerle yapıştırdığımda neden 404 hatası veriyor?

Birçok web sunucusu, kodlanmamış özel karakterler içeren URL'leri reddeder. URL'niz boşluk, köşeli parantez, küme parantezleri veya ASCII olmayan karakterler (vurgulu harfler, CJK karakterleri) içeriyorsa, bunları önce URL Kodlayıcıyı kullanarak kodlayın.

Bilal Ahmad