Bir arama sorgusunu kodla
hello world & more
hello%20world%20%26%20more
Boşluklar %20, & ise %26 oluyor; böylece query parametre ayracıyla karıştırılmıyor.
URL bileşenlerini güvenli biçimde kodla ve çöz.
Son güncelleme
URL encoder (percent-encoder ya da URI encoder olarak da bilinir), URL içinde rezerve edilmiş veya güvenli olmayan karakterleri % ardından iki onaltılık (hex) basamakla değiştirir. Geliştiriciler bu araca query string oluştururken, path segment'lerini escape ederken, boşluk veya ASCII dışı karakter içeren URL'ler paylaşırken ya da redirect sorunlarını ayıklarken başvurur.
URL'ler küçük bir ASCII karakter kümesiyle sınırlıdır. Bu kümenin dışında kalan her şey — boşluklar, aksanlar, emoji veya veri olarak kullanıldığında ?, #, &, = gibi rezerve sembolleri — tarayıcıdan sunucuya sağ salim ulaşabilmesi için percent-encoded edilmek zorundadır.
JavaScript iki farklı encoding fonksiyonu sunar: encodeURI (URL yapısını korur: /, ?, #, &) ve encodeURIComponent (rezerve olan her şeyi kodlar). Query string'e koyacağın *değerler* için encodeURIComponent, çalışır halde tutmak istediğin *bütün URL'ler* için encodeURI kullan.
% ve iki hex basamağıyla değiştirir — örneğin boşluk %20 olur.: / ? # & = +) URL yapısında anlam taşır. Ayraç olarak değil veri olarak kullanılıyorlarsa kodlanmaları gerekir.Elinde ham metin varsa ve URL-safe hale getirmek istiyorsan Encode'u seç. Elinde %-encoded bir metin varsa ve orijinaline dönmek istiyorsan Decode'u seç.
Query string değerleri için encodeURIComponent (rezerve olan her şeyi kodlar), bütün URL'ler için ise encodeURI (yapıyı korur) seç.
Ham metni veya kodlanmış URL'yi yapıştır. Toplu decode için çok satırlı girdi de çalışıyor.
Kodlanmış ya da çözülmüş değeri kopyala. Dönüşüm tamamen tarayıcıda lokal olarak çalışır, yani URL içindeki gizli bilgiler senin makinenden çıkmaz.
En çok karşına çıkacak karakterler ve percent-encoded karşılıkları. Rezerve karakterlerin anlamı RFC 3986'dan geliyor.
| Karakter | Kodlanmış | Neden |
|---|---|---|
| boşluk | %20 | URL'lerde boşluğa izin verilmez |
! | %21 | Bazı sunucularda rezerve |
# | %23 | Fragment'ın başlangıcını gösterir |
$ | %24 | Rezerve karakter |
& | %26 | Query parametrelerini ayırır |
+ | %2B | Form-encoded body'lerde boşluk anlamına gelir |
/ | %2F | Path ayracı |
: | %3A | Scheme ile host'u ayırır |
= | %3D | Query string'de anahtarı değerden ayırır |
? | %3F | Query string'in başlangıcını gösterir |
@ | %40 | Userinfo ile host'u ayırır |
| UTF-8 baytı | %C3%A9 | ASCII dışı her bayt ayrı ayrı kodlanır |
hello world & more
hello%20world%20%26%20more
Boşluklar %20, & ise %26 oluyor; böylece query parametre ayracıyla karıştırılmıyor.
café
caf%C3%A9
é karakteri UTF-8'de 0xC3 0xA9 bayt dizisidir; bu yüzden kodlanmış halde tek karakter için *iki* %XX grubu görüyorsun.
https://example.com/path?q=hello world
https://example.com/path?q=hello%20world
https%3A%2F%2Fexample.com%2Fpath%3Fq%3Dhello%20world
encodeURI URL yapısını (slash'ler, ?, =) bozmadan bırakır. encodeURIComponent ise rezerve olan her şeyi kodlar — onu query string'in *içine* koyacağın değerler için kullan, asla bütün bir URL'ye uygulama.
encodeURI kullanmak — & ve = kodlanmadan kalır ve parametre parse'ı bozulur.%20 yerine %2520 görüyorsan klasik double-encoding hatasındasın.application/x-www-form-urlencoded) + boşluk anlamına gelirken URL path veya query'de düz + olduğunu unutmak.% ve iki hex basamağıyla temsil etmenin yoludur.encodeURI, URL yapısını oluşturan karakterleri (/, ?, #, &, =, +) korur. encodeURIComponent ise hepsini kodlar; URL içine yerleştireceğin tek tek *değerler* — query parametre değerleri, path segment'leri, fragment'ler — için ihtiyacın olan tam da budur. Detaylar için MDN'deki encodeURI ve encodeURIComponent sayfalarına bak.%20 oluyor?0x20) percent-encoded hali olan %20 ile değiştirilir.decodeURI, decodeURIComponent veya herhangi bir URL-decoder, percent-encoding'i orijinal karakterlere geri çevirir.