Sorgu parametre değerlerini boşluklar, ve işaretleri ve Unicode ile URL kodlayın. encodeURIComponent vs encodeURI, %20 vs + ve çift kodlama hataları.
Giriş search query=hello world&category=café & résumé&redirect=https://example.com/path?id=42 şu şekilde kodlanır:
search%20query%3Dhello%20world%26category%3Dcaf%C3%A9%20%26%20r%C3%A9sum%C3%A9%26redirect%3Dhttps%3A%2F%2Fexample.com%2Fpath%3Fid%3D42
Ayrılmamış karakterler (A-Z a-z 0-9 - _ . ~) dışındaki her karakter yüzde kodlu formuyla değiştirilmiştir.
RFC 3986’ya göre, ayrılmamış karakter olmayan herhangi bir bayt, o baytın değerini temsil eden yüzde işareti ve iki büyük harf onaltılık basamak olarak kodlanır.
Asla kodlanması gerekmeyen ayrılmamış karakterler:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 - _ . ~
Bir URL’nin tanımlanmış sözdizimi vardır. ?, &, =, #, / ve : karakterlerinin her birinin URL yapısında belirli rolleri vardır:
? yolu sorgu dizesinden ayırır& sorgu parametrelerini birbirinden ayırır= parametre anahtarını değerinden ayırır# parça tanımlayıcısını başlatır/ yol bölümlerini ayırır: şemayı geri kalandan ayırırencodeURI("https://example.com/search?q=hello world")
// "https://example.com/search?q=hello%20world"
// ? ve = kodlanmaz
encodeURIComponent("hello world&goodbye=world")
// "hello%20world%26goodbye%3Dworld"
// & ve = kodlanır
Sorgu dizeleri oluşturmak için her zaman encodeURIComponent kullanın:
const params = {
q: "café & résumé",
redirect: "https://example.com/path?id=42"
};
const queryString = Object.entries(params)
.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
.join("&");
%20+Python’da fark açıktır:
from urllib.parse import quote, quote_plus
quote("hello world") # "hello%20world"
quote_plus("hello world") # "hello+world"
encodeURIComponent’e https://example.com/path?q=hello geçirirseniz, iki nokta üst üste, eğik çizgiler ve soru işaretinin tümü kodlanır.
Anahtarlar da kullanıcı girişinden geliyorsa özel karakterler içerebilir. Hem anahtarları hem de değerleri kodlayın.
Zaten URL kodlu bir string alıp tekrar kodlarsanız, her %, %25 olur.
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.