UltKit

URL Encode ve Decode

Metni URL'ye güvenle eklenebilir hâle getirin ya da %20 türü dizileri yeniden okunabilir karakterlere çevirin. Araç, tarayıcınızın kendi encodeURIComponent, encodeURI ve decodeURIComponent işlevlerini kullanır, sorgu parametrelerini bir tabloda listeler ve sunucuya hiçbir şey göndermez.

Mod

0 karakter · 0 kelime · 0 satır

0 karakter · 0 kelime · 0 satır

Tamamen bu tarayıcı sekmesinde çalışır. Metniniz asla yüklenmez veya saklanmaz.

Her işlevin kaçırdığı karakterler

Tarayıcı işlevleriyle hesaplandı. encodeURIComponent harflere, rakamlara ve şu işaretlere dokunmaz: ! ' ( ) * - . _ ~

KarakterencodeURIComponentencodeURI
(boşluk)%20%20
!!!
"%22%22
#%23#
$%24$
%%25%25
&%26&
'''
(((
)))
***
+%2B+
,%2C,
/%2F/
:%3A:
;%3B;
=%3D=
?%3F?
@%40@
[%5B%5B
]%5D%5D
{%7B%7B
}%7D%7D
|%7C%7C
\%5C%5C
^%5E%5E
`%60%60
<%3C%3C
>%3E%3E
~~~
---
___
...
é%C3%A9%C3%A9
€%E2%82%AC%E2%82%AC
😀%F0%9F%98%80%F0%9F%98%80

Yüzde kodlama ve RFC 3986'nın ayrılmış karakterleri

Bir URL yalnızca sınırlı bir ASCII karakter kümesi içerebilir. URI sözdizimi için 2005 tarihli RFC 3986 belirtimi bu karakterleri iki gruba ayırır. Ayrılmamış (unreserved) karakterler, yani A–Z, a–z, 0–9 ve - . _ ~ işaretleri, hiçbir zaman kodlanmak zorunda değildir. Ayrılmış (reserved) karakterlerin ise görevleri vardır: : / ? # [ ] @ genel ayırıcıları şemayı, ana bilgisayarı, yolu, sorguyu ve parçayı birbirinden ayırır; ! $ & ' ( ) * + , ; = alt ayırıcıları ise bunların içindeki öğeleri ayırır, sorgu dizesindeki & ve = gibi. Geri kalan her karakter ve düz veri olarak kullanılan her ayrılmış karakter yüzde kodlamasıyla (percent-encoding) kodlanmalıdır.

Yüzde kodlaması, bir baytı % ve ardından gelen iki onaltılık basamak olarak yazar. Metin önce UTF-8'e dönüştürülür; böylece boşluk %20, é (iki bayt) %C3%A9 olur ve bir emoji dört adet %XX grubuna dönüşür. "café & bar" aramasının bağlantıda caf%C3%A9%20%26%20bar olarak görünmesinin nedeni budur: & kodlanır, böylece sunucu onu yeni bir parametrenin başlangıcı sanmaz.

encodeURIComponent, encodeURI ve kod çözme

encodeURIComponent, sorgu değeri, yol bölümü veya parametre olarak geçirilen bir yönlendirme URL'si gibi tek bir parça için doğru seçimdir. Ayrılmamış karakterler ile tarihsel nedenlerle JavaScript'in dokunmadığı ! ' ( ) * dışındaki her şeyi kaçırır. encodeURI (tam URL) girdisinin zaten eksiksiz bir adres olduğunu varsayar ve ayrılmış karakterleri olduğu gibi bırakır; bu yüzden https://example.com/a b?q=1 içinde yalnızca boşluk kodlanır. Bir parametre değerinde encodeURI kullanmak klasik bir hatadır: değerin içindeki & veya # korunur ve URL'yi bozar.

Kodu çöz her iki işlevi de tersine çevirir. GET ile gönderilen HTML formları daha eski application/x-www-form-urlencoded biçimini kullanır; bu biçimde boşluk %20 yerine + olarak yazılır. Bunlar için + işaretini boşluk say seçeneğini işaretli tutun; telefon numarasında olduğu gibi gerçek bir artı işareti önemliyse işareti kaldırın. Girdide ardından iki onaltılık basamak gelmeyen bir % varsa ya da geçerli UTF-8 olmayan baytlar bulunuyorsa, kod çözme tahmin yürütmek yerine açık bir mesajla başarısız olur. Metin bir sorgu dizesi içeriyorsa parametreleri aracın altındaki bir tabloda çözülmüş olarak görünür. URL'lerdeki ikili veriler için olağan alternatif Base64url'dir.

Sık sorulan sorular

URL'deki boşluk %20 mi olmalı, artı işareti mi?
Yollarda ve RFC 3986 açısından boşluk %20'dir. + biçimi yalnızca HTML formlarının kodladığı şekildeki sorgu dizelerinde boşluk anlamına gelir; bu yüzden %20 her yerde güvenli seçimdir.
URL'mde neden %2520 oluştu?
İki kez kodlanmıştır. İlk geçişte boşluk %20 olmuş, ikinci geçişte % karakterinin kendisi %25 olarak kodlanmıştır. Fazla katmanı geri almak için bir kez kod çözün ve değerleri kodunuzda yalnızca tek bir noktada kodlayın.
Hangi karakterler hiçbir zaman yüzde kodlama gerektirmez?
RFC 3986'daki ayrılmamış küme: büyük ve küçük A'dan Z'ye harfler, 0'dan 9'a rakamlar ile kısa çizgi, nokta, alt çizgi ve tilde.
URL, kodlama yapılmadan Türkçe karakterler içerebilir mi?
Tarayıcılar bunları gösterir, ancak ağ üzerinde yoldaki veya sorgudaki her ASCII dışı karakter yüzde kodlu UTF-8 olarak gönderilir. Alan adları ise bunları xn-- etiketlerine çeviren ayrı bir sistem olan Punycode'u kullanır.
Kod çözme neden hatalı biçimlendirilmiş dizi uyarısı veriyor?
Metinde ardından iki onaltılık basamak gelmeyen bir % var, örneğin düz yazılmış "100%", ya da baytlar geçersiz UTF-8'e çözülüyor. Kod çözmeden önce başıboş % işaretlerini %25 olarak kodlayın.