URL kodlayıcı ve çözücü

Acrafto Team Geliştiriciler
Güncellendi
Şu olarak kodla

Tek bir sorgu değeri veya yol bölümü için. Harfler, rakamlar ve - _ . ! ~ * ' ( ) dışındaki her şeyi kodlar, encodeURIComponent ile aynıdır.

Sonuç

Her şey tarayıcınızda çalışır ve yapıştırdığınız hiçbir şey yüklenmez. Bu önemlidir, çünkü URL'ler sık sık token ve oturum kimliği taşır.

URL encode decode işlemini yazdıkça çevrimiçi yapın: araç boşlukları, aksanlı harfleri ve & ya da ? gibi sembolleri %20 gibi yüzde kodlu dizilere çevirir ve bunları yeniden okunabilir metne döndürür. İkinci sekme bir URL ayrıştırıcıdır. Herhangi bir adresi protokol, ana bilgisayar, yol ve sorgu parametrelerine ayırır; parametreleri düzenleyebilir, kapatabilir veya izleme etiketlerinden arındırabilirsiniz, araç da doğru kodlanmış URL’yi sizin için geri yazar. Her şey tarayıcınızda gerçekleşir.

URL encode decode nasıl yapılır

  1. Kodla / Çöz sekmesindeki alana yazın veya yapıştırın. Sonuç her tuş vuruşuyla güncellenir.
  2. Yön seçin. Kodla, metni URL için güvenli hale getirir, Çöz ise caf%C3%A9%20au%20lait dizisini yeniden café au lait yapar. %20 gibi diziler içeren metni boş alana yapıştırırsanız araç kendiliğinden Çöz yönüne geçer (Bunun yerine kodla düğmesi geri döndürür). Kodlanması gereken düz metni Çöz yönündeyken yapıştırırsanız aynı şekilde Kodla yönüne geçer ve Bunun yerine çöz düğmesi görünür.
  3. Kodlarken Şu olarak kodla altında metnin ne olduğunu seçin (bir sonraki bölüme bakın). Varsayılan Parametre değeri, tek bir sorgu değeri için doğrudur.
  4. Kopyala sonucu panoya koyar. Değiştir sonucu girdiye taşır ve yönü ters çevirir. Bu hızlı bir gidiş dönüş denetimidir: az önce kodladığınız metni çözmek özgün metninizi vermelidir.

Aracın değiştirdiği her karakter sonuçta vurgulanır. Üzerine geldiğinizde karakteri, Unicode kod noktasını ve baytlarını görürsünüz, örneğin é U+00E9 %C3%A9. Alanların altında Karakter, UTF-8 bayt ve Kodlanan karakter (ya da Çözülen karakter) sayısı görünür. Bir örnek deneyin düğmesi Fiyat: %5'e varan indirim, çay & şeker? Evet! cümlesini yükler. Cümle 45 karakterdir ama 47 UTF-8 bayttır, çünkü ç ve ş gibi Türkçe harflerin her biri iki bayt yer kaplar.

Kodlarken Her satırı ayrı kodla seçeneği her satırı kendi başına kodlar ve satır sonlarını korur; bu, değer ya da bağlantı listeleri için uygundur. Seçenek kapalıyken satır sonu da kodlanır ve %0A olur. Metin parametreli bir URL ise araç, adresi ayrıştırıcı sekmesinde açan Parçalara ayır düğmesini sunar.

URL parametresi, tam URL veya form verisi nasıl kodlanır

Her karakterin her yerde kodlanması gerekmez. Eğik çizgi, yolda klasörleri ayırır ama bir parametre değerinin içinde sıradan veridir; bu yüzden doğru sonuç neyi kodladığınıza bağlıdır. Şu olarak kodla dört mod sunar:

  • Parametre değeri, JavaScript’in encodeURIComponent işlevi gibi çalışır ve tek bir sorgu değeri ya da yol bölümü için uygundur. Harfler, rakamlar ve - _ . ! ~ * ' ( ) dışındaki her şeyi kodlar; böylece değerin içindeki &, =, / veya ? URL’yi bozamaz. café & crème kodlanınca caf%C3%A9%20%26%20cr%C3%A8me olur ve q= sonrasına konmaya hazırdır.
  • Tam URL, yalnızca düzeltilmesi gereken tam bir adres içindir. Boşlukları, ASCII dışı karakterleri, denetim karakterlerini, ters tırnağı ve " < > \ ^ { | } karakterlerini kodlar; URL’ye yapısını veren her şeyi korur: : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Böylece https://example.com/search?q=café au lait&lang=fr adresi https://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr olur. Zaten kodlanmış diziler olduğu gibi kalır, tek başına duran % ise %25 olur. JavaScript’in encodeURI işlevinden farkı budur: o, var olan bir %20 dizisini %2520 yapar ve http://[2001:db8::1]:8080/ gibi bir IPv6 adresinin köşeli parantezlerini kodlar.
  • Form verisi, HTML formlarının ve URLSearchParams işlevinin ürettiği application/x-www-form-urlencoded (İngilizce) biçimini izler. Boşluk + olur, yalnızca harfler, rakamlar ve * - . _ kodlanmadan kalır; bu yüzden ! ' ( ) ~ karakterleri de kodlanır.
  • Katı RFC 3986, yalnızca RFC 3986 (İngilizce) belgesinin ayrılmamış karakterlerini kodlamadan bırakır: harfler, rakamlar ve - . _ ~. OAuth 1.0 (RFC 5849) ve AWS Signature Version 4 tam olarak bunu gerektirir, çünkü bir imza ancak iki taraf ! ya da * karakterini aynı şekilde kodlarsa eşleşir.

Aynı karakterler her modda şöyle görünür:

KarakterParametre değeriTam URLForm verisiKatı RFC 3986
boşluk%20%20+%20
&%26&%26%26
/%2F/%2F%2F
+%2B+%2B%2B
~~~%7E~
!!!%21%21
****%2A
é%C3%A9%C3%A9%C3%A9%C3%A9

Metin her zaman UTF-8 olarak kodlanır ve onaltılık rakamlar her zaman büyük harftir. Girdi zaten %20 gibi diziler içeriyorsa bir not bunu söyler ve Bunun yerine çöz düğmesini sunar; böylece metni yanlışlıkla iki kez kodlamazsınız.

Sorgu parametresinde JSON iletmek için onu JSON biçimlendirici aracında küçültün ve Parametre değeri olarak kodlayın: {"id":7,"tags":["a","b"]} dizisi %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D olur. Tersi de işler: parametreyi burada çözün, sonra orada biçimlendirin.

URL decode sorunları: artı işaretleri, %2520 ve bozuk diziler

URL decode çoğu zaman sorunsuz çalışır, ama dört durum insanı yanıltır. Araç hata vererek durmak yerine bunların her birini ele alır:

  • Artı işareti, form verisinde ve çoğu sorgu dizesinde boşluk anlamına gelir. + işaretini boşluk olarak çöz varsayılan olarak açıktır; bu yüzden caf%C3%A9+au+lait dizisi café au lait olarak çözülür. Tam bir URL’de yalnızca ? işaretinden sonraki artılar boşluk sayılır, çünkü yolda artı sıradan bir karakterdir. Artı gerçekten artı anlamına geliyorsa seçeneği kapatın. %2B olarak kodlanmış bir artı her zaman artı işareti olarak kalır.
  • Çift kodlama, iki kod katmanının aynı değeri ayrı ayrı kodlamasıyla oluşur; RFC 3986 buna karşı açıkça uyarır. Her % işareti %25 olur, yani boşluk %20 yerine %2520 haline gelir. Çözülen sonuç hâlâ %20 gibi diziler içeriyorsa araç metnin büyük olasılıkla iki kez kodlandığını söyler ve Yeniden çöz düğmesini sunar.
  • Geçersiz bir dizi, yani 100% ya da %G1 örneklerindeki gibi iki onaltılık rakamın izlemediği bir %, JavaScript’in decodeURIComponent işlevinin URIError fırlatmasına yol açar. Burada böyle diziler olduğu gibi bırakılır, kırmızıyla işaretlenir ve sayılır; metnin geri kalanı çözülür.
  • Eski Latin-1 bağlantıları UTF-8 öncesi dönemden gelir; o zaman bazı siteler é harfini tek bayt olan %E9 ile kodlardı. caf%E9 geçerli UTF-8 değildir, bu yüzden decodeURIComponent hata verir ve Python’un unquote işlevi caf ardından U+FFFD değiştirme karakterini döndürür. Araç bu baytları Windows-1252 olarak okur, caf%E9 dizisini café olarak çözer ve bunu belirten bir not ekler.

Çözülen metindeki sekme ya da boş bayt gibi denetim karakterleri ␉ ve ␀ gibi görünür sembollerle gösterilir, ancak Kopyala gerçek metni kopyalar.

URL ayrıştırıcı: URL’yi parçalara ayırın ve sorgu parametrelerini düzenleyin

URL ayrıştır ve düzenle sekmesindeki URL alanına bir adres yapıştırın; adres Protokol, Ana bilgisayar, Port, Yol ve Parça (#) bölümlerine ayrılır, URL içeriyorsa Kullanıcı adı ve Parola da eklenir. Değerler çözülmüş olarak gösterilir; bu yüzden sekme, URL parametrelerini çözmenin de en hızlı yoludur: ko%C5%9Fu+ayakkab%C4%B1s%C4%B1 yerine koşu ayakkabısı okursunuz. Düzenleme her iki yönde de çalışır, tıpkı tarayıcının adres çubuğu ve Postman’deki parametre tablosu gibi. Bir alanı değiştirirseniz URL hemen, doğru kodlanmış olarak yeniden yazılır; URL’yi değiştirirseniz tüm parçalar yeniden okunur. Dokunmadığınız parçalar karakter karakter olduğu gibi kalır.

Sorgu parametreleri tablosu her parametreyi Ad ve Değer ile listeler. Bir parametreyi silmeden URL dışında bırakmak için URL’ye dahil et işaretini kaldırın; bir isteği bozan parametreyi ararken bu işe yarar. Parametre ekle, Parametreyi kaldır ve A’dan Z’ye sırala adlarının dediğini yapar. tag=a&tag=b gibi tekrarlanan adlar ve ?debug gibi değersiz adlar korunur. Parametrelerde boşluk, boşlukların %20 ya da + olarak yazılıp yazılmayacağını belirler; varsayılan olarak yapıştırdığınız URL’yi izler.

Giriş ve ödeme bağlantıları çoğu zaman bir parametrenin içinde ikinci bir URL taşır; bu URL, kendi ? ve & işaretleri dıştakilerle karışmasın diye kodlanmıştır:

https://auth.example.com/authorize?client_id=abc&redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Ftab%3D2

Değeri kendisi bir URL olan parametre, genellikle redirect_uri, return, url ya da next, bir İçteki URL’yi düzenle düğmesi alır. İçteki https://app.example.com/callback?tab=2 adresi kendi parçaları ve parametreleriyle ayrı bir düzey olarak açılır, bir yol izi (Ana URL › redirect_uri) geri götürür ve her değişiklik kodlanarak dıştaki URL’ye yazılır. Ana URL’yi kopyala sonucu kopyalar. Bu, birkaç düzey derinliğe kadar çalışır.

# sonrasındaki bölüm parametreye benziyorsa, örneğin OAuth örtük akışındaki #access_token=...&state=... ya da tek sayfalı uygulamaların yollarındaki #/search?q=shoes gibi, ikinci bir tablo olan Parça parametreleri bunları da listeler.

Ayrıştırıcı sorunları da belirtir: tarayıcıların göreli bağlantı saydığı, protokolsüz bir URL; 0 ile 65535 aralığının dışındaki bir port; ve boşluk, aksanlı harf, " ya da < gibi kodlanması gereken karakterler. Bunları Bunları kodla düğmesi tek adımda düzeltir. a=1&b=2 gibi adres içermeyen metin sorgu dizesi olarak okunur. Uluslararası alan adı için araç, DNS ve tarayıcıların kullandığı Punycode biçimini gösterir; böylece münchen.de adresi xn--mnchen-3ya.de olur, xn-- ile başlayan bir alan adı ise okunabilir biçimini alır.

URL’yi kopyala bitmiş adresi kopyalar, Aç onu yeni sekmede açar (yalnızca http ve https bağlantıları), JSON olarak kopyala ise parametreleri JSON nesnesi olarak verir; tekrarlanan adlar bir dizide toplanır.

URL’den UTM ve diğer izleme parametrelerini kaldırma

Bültenlerden, reklamlardan ve sosyal ağlardan gelen bağlantılar, yalnızca ziyaretçinin siteye nereden geldiğini söyleyen parametreler taşır. utm_source, utm_medium, utm_campaign, utm_term ve utm_content UTM parametreleri (İngilizce), Google Analytics’in öncülü olan Urchin’e dayanır. fbclid (Facebook), gclid (Google Ads) ve msclkid (Microsoft Advertising) gibi tıklama kimliklerini platformların kendisi ekler.

Ayrıştırıcı bunları izleme etiketiyle işaretler, İzlemeyi kaldır (n) düğmesi hepsini bir kerede siler. Tüm utm_* parametrelerinin yanı sıra ttclid (TikTok), mc_cid (Mailchimp) ve _hsenc (HubSpot) gibi 20’den fazla parametreyi daha tanır. Sayfanın ihtiyaç duyduğu parametreler yerinde kalır: Bir örnek deneyin ile gelen mağaza bağlantısında İzlemeyi kaldır (4) düğmesi utm_source, utm_medium, utm_campaign ve fbclid parametrelerini siler; q, size, return ve #reviews parçasını korur.

QR koda girecek bir bağlantıyı önce burada temizlemeye değer. İzleme parametreleri olmadan bağlantı daha kısadır ve daha kısa bağlantı, taraması daha kolay, daha seyrek bir kod verir.

Yüzde kodlama nedir ve karakterler nasıl %XX olur

Yüzde kodlama (İngilizce), URL encode olarak da bilinir; bir karakteri % ve ardından iki onaltılık rakam olarak yazar. Bir URL yalnızca sınırlı bir ASCII karakter kümesi içerebilir ve bunlardan bazılarının görevi vardır: ? sorguyu başlatır, & parametreleri ayırır, # parçayı başlatır. RFC 3986 bunlara ayrılmış karakterler der (: / ? # [ ] @ ve ! $ & ' ( ) * + , ; =). Harfler, rakamlar ve - . _ ~ ayrılmamıştır ve hiç kodlanması gerekmez. Geri kalan her şey ve düz veri olarak kullanılan her ayrılmış karakter kodlanır.

ASCII dışındaki karakterler önce UTF-8 baytlarına çevrilir ve her bayt kendi %XX değerini alır:

  • é, U+00E9’dur; UTF-8 bunu C3 A9 olmak üzere iki bayt olarak saklar, bu yüzden %C3%A9 olur.
  • €, U+20AC’dir ve üç bayttır: %E2%82%AC.
  • U+1F600 (sırıtan yüz) gibi bir emoji dört bayt yer kaplar: %F0%9F%98%80.

%c3%a9 ile %C3%A9 aynı anlama gelir, ancak RFC 3986 büyük harf önerir ve araç da bunu yazar. En sık karşılaştığınız karakterlerin yüzde kodlama tablosu:

KarakterKodlanmışKarakterKodlanmış
boşluk%20+%2B
!%21,%2C
"%22/%2F
#%23:%3A
$%24;%3B
%%25=%3D
&%26?%3F
'%27@%40
(%28[%5B
)%29]%5D
*%2Asatır sonu%0A

JavaScript, Python ve PHP’de URL kodlama

Her dilin bunun için işlevleri vardır ve farkları çoğunlukla boşlukları, eğik çizgileri ve ! ' ( ) * ~ karakterlerini nasıl ele aldıklarında toplanır.

JavaScript’te bir değer için encodeURIComponent (İngilizce), tam bir adres için encodeURI, form kodlaması için URLSearchParams bulunur:

encodeURIComponent("café & crème")                     // "caf%C3%A9%20%26%20cr%C3%A8me"
encodeURI("https://example.com/a b?q=café")            // "https://example.com/a%20b?q=caf%C3%A9"
new URLSearchParams({ q: "café & crème" }).toString()  // "q=caf%C3%A9+%26+cr%C3%A8me"
decodeURIComponent("caf%C3%A9")                        // "café"

decodeURIComponent, + karakterini boşluğa çevirmez ve 100% gibi geçersiz bir dizide URIError fırlatır.

Python’da işlevler urllib.parse içindedir. quote varsayılan olarak / karakterini korur (safe='/'), bunun dışında RFC 3986’nın ayrılmamış karakterleri dışındaki her şeyi kodlar. quote_plus boşlukları + olarak yazar ve / karakterini de kodlar:

from urllib.parse import quote, quote_plus, urlencode, unquote_plus

quote("café & crème/brûlée")       # 'caf%C3%A9%20%26%20cr%C3%A8me/br%C3%BBl%C3%A9e'
quote("a b/c", safe="")            # 'a%20b%2Fc'
quote_plus("café & crème/brûlée")  # 'caf%C3%A9+%26+cr%C3%A8me%2Fbr%C3%BBl%C3%A9e'
urlencode({"q": "café & crème", "page": 2})  # 'q=caf%C3%A9+%26+cr%C3%A8me&page=2'
unquote_plus("caf%C3%A9+au+lait")  # 'café au lait'

PHP’de urlencode, bir HTML formu gibi kodlar ve boşluğu + olarak yazar; rawurlencode ise RFC 3986’yı izler ve %20 yazar:

urlencode("café & crème");     // "caf%C3%A9+%26+cr%C3%A8me"
rawurlencode("café & crème");  // "caf%C3%A9%20%26%20cr%C3%A8me"

rawurlencode, Katı RFC 3986 ile aynı sonucu verir. urlencode, * karakterini %2A olarak kodlaması dışında Form verisi ile eşleşir.

Sık sorulan sorular

URL'de boşluk %20 mi yoksa + mı olarak kodlanmalı?

URL'nin her yerinde %20 çalışır. + yalnızca sorgu dizesinde ve HTML formlarının gönderdiği biçim olan form verisinde boşluk anlamına gelir. Yolda + sıradan bir artı işaretidir, yani /a+b olduğu gibi kalır. Bir sorgu değerinde gerçek bir artı gerekiyorsa onu %2B olarak yazın. Araçta Form verisi boşlukları +, diğer üç mod ise %20 olarak yazar.

URL'deki %20, %2F ve %3D ne anlama gelir?

Bunlar kodlanmış karakterlerdir: %20 boşluk, %2F eğik çizgi, %3D eşittir işaretidir. Sık gördüğünüz diğerleri %26 (&), %3F (?), %3A (:), %2C (virgül) ve %27 (kesme işareti) olarak sayılabilir. İki rakam, karakterin onaltılık düzendeki kodudur. Aksanlı harfler ve diğer ASCII dışı karakterler, é için %C3%A9 örneğindeki gibi iki ila dört böyle çift alır. Okumak için tüm diziyi çözücüye yapıştırın.

encodeURI ile encodeURIComponent arasındaki fark nedir?

encodeURI tam bir adres içindir ve : / ? # & = gibi adrese yapı veren karakterlere dokunmaz. encodeURIComponent tek bir parça, yani bir parametre değeri ya da yol bölümü içindir ve bu karakterleri de kodlar; bu yüzden https://example.com/?a=1&b=2 adresi https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2 olur. Bu araçta Parametre değeri, encodeURIComponent ile eşleşir; Tam URL ise encodeURI gibidir, ancak %20 gibi var olan dizileri %2520 yapmak yerine korur.

URL'den UTM parametreleri nasıl kaldırılır?

Bağlantıyı URL ayrıştır ve düzenle sekmesine yapıştırın ve İzlemeyi kaldır (n) düğmesine basın. Bu, her utm_* etiketini ve fbclid ile gclid gibi tıklama kimliklerini bir kerede siler. Sonra URL'yi kopyala düğmesine basın. Yalnızca bazılarını silmek için istemediğiniz satırlarda Parametreyi kaldır düğmesini kullanın.

URL kodlama şifreleme ya da Base64 ile aynı şey midir?

Hayır. URL kodlama hiçbir şeyi gizlemez: herkes caf%C3%A9 dizisini yeniden café olarak çözebilir, bu yüzden bir parolayı ya da token'ı asla korumaz. Yalnızca karakterleri bir adreste kullanmak için güvenli hale getirir. Base64, ikili dosyalar dahil her türlü veriyi 64 karakterlik bir dizeye çeviren farklı bir kodlamadır. URL'deki bir Base64 dizesinin +, / ve = karakterlerinin yine de kodlanması gerekir; Base64 kodlayıcı ve çözücünün üretebildiği URL güvenli biçimi kullanmadığınız sürece.

Yapıştırdığım URL'ler yüklenir veya saklanır mı?

Hayır. Kodlama, çözme ve ayrıştırma tarayıcınızda çalışır ve yapıştırdığınız hiçbir şey sunucuya gönderilmez. Bu önemlidir, çünkü URL'ler sık sık erişim token'ları, oturum kimlikleri ya da parola sıfırlama kodları taşır. Tarayıcı yalnızca seçtiğiniz sekmeyi ve seçenekleri hatırlar, metinleri asla. Adresi yükleyen tek şey, onu bağlantıya tıklamış gibi yeni sekmede açan Aç düğmesidir.

Programcılara yönelik daha fazla araç Geliştiriciler kategorisinde, bir biçimi başka bir biçime çeviren araçlar ise Dönüştürücüler altında toplanmıştır. İki uzun URL arasındaki farkı, örneğin çalışan ve hata veren bir API çağrısını bulmak için ikisini metin karşılaştırma aracına yapıştırın ve karakter bazında karşılaştırın.

Bu sayfaları arkadaşlarınızla paylaşırsanız, yer imlerine eklerseniz veya bağlantı verirseniz memnun olurum. Teşekkürler! 🙏