ByteCompress

URL Kodlayıcı

HTTP isteklerinde, sorgu dizelerinde ve form verilerinde iletilmesi güvenli hale getirmek için URL'lerde veya bireysel URI bileşenlerinde özel karakterleri yüzde kodlayın. RFC 3986'yı takip eder.

0 chars
FreeClient-sideNo signup

Bir URL sorgu dizesindeki boşluk karakteri isteği sessizce bozar. RFC 3986 (Uniform Resource Identifier: Generic Syntax) hangi karakterlerin URL'de güvenli olduğunu ve hangilerinin yüzde kodlanması gerektiğini tanımlar. Yüzde kodlama, her güvenli olmayan byte'ı % ardından iki büyük harfli onaltılık rakam ile değiştirir. Bu tarayıcı tabanlı kodlayıcı, verilerinizi herhangi bir yere iletmeden RFC 3986'yı anında uygular. Tam URL'leri veya bireysel sorgu parametre değerlerini kodlamak için kullanın ve her seferinde standartlara uygun çıktı alın.

URL'yi Kodlama

  1. URL'yi veya metni giriş alanına yapıştırın.
  2. Yalnızca güvenli olmayan karakterleri kodlamak için Tam URL modunu, Bileşen modunu seçerek tüm özel karakterleri kodlamak için & ve = dahil edin.
  3. Yüzde kodlanmış çıktı sonuç panelinde görünür.
  4. İsteğinizde, kodunuzda veya belgelerinizde kullanmak için kodlanmış dizeyi kopyalayın.

Yüzde Kodlamayı Anlamak

RFC 3986 Standardı

RFC 3986 (IETF, 2005) bir URI'de iki karakter kategorisi tanımlar. Rezerve edilmemiş karakterler (A-Z a-z 0-9 - _ . ~) kodlama olmadan görünebilir. Rezerve edilmiş karakterler (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) özel yapısal anlam taşır ve bağlama bağlı olarak kodlama gerektirebilir veya gerektirmeyebilir. Diğer tüm karakterler - boşluklar, ASCII dışı Unicode ve bu setlerin dışındaki karakterler dahil - yüzde kodlanmalıdır.

encodeURI ile encodeURIComponent

JavaScript iki kodlama fonksiyonu sağlar. encodeURI() tam bir URL'yi kodlar ve rezerve edilmiş karakterleri olduğu gibi bırakır çünkü yapısal rolleri vardır. encodeURIComponent() yapısal karakterleri de kodlar, onları literal veri olarak ele alır - bu, & ve = URL sözdizimini bozabileceği için bireysel sorgu parametre adları ve değerleri için tasarlanmıştır. Bu aracın Tam URL modu encodeURI ile; Bileşen modu encodeURIComponent ile eşleşir.

Örnek

Girdi

Merhaba Dünya! @2024

Çıktı (Bileşen modu)

Merhaba%20Dünya!%20%402024

Boşluk %20 (RFC 3986 standardı) olarak kodlanır; @ %40 olur. Ünlem işareti bazı bağlamlarda rezerve edilmemiş bir karakterdir ve moda bağlı olarak kodlanabilir veya kodlanmayabilir.

Yaygın Kullanım Alanları

  • Sorgu parametre değerleri - URL'ye eklemeden önce &, = veya + içeren değerleri kodlayın
  • Arama motoru sorguları - Yönlendirme URL'si oluşturmadan önce kullanıcı arama girişini kodlayın
  • API istek yapısı - Eğik çizgiler, boşluklar veya özel karakterler içeren yol segmentlerini kodlayın
  • OAuth parametreleri - OAuth 1.0 imza temel dizeleri RFC 5849'a göre yüzde kodlama gerektirir

Yaygın Hatalar

  • Çift kodlama - Bir değer zaten yüzde kodlanmışsa, tekrar kodlamak % karakterini de kodlar ve %2520 yerine %20 üretir
  • Parametre değerleri için Tam URL modunu kullanmak - Tam URL modu & ve = karakterlerini kodlamaz, sorgu dizisi sözdizimini bozar; parametre değerleri için Bileşen modunu kullanın
  • ASCII dışı karakterleri unutmak - ASCII dışı metin önce UTF-8 byte'larına dönüştürülmeli, ardından her byte ayrı ayrı yüzde kodlanmalıdır

Bu süreci tersine çevirmek için URL Çözücü kullanın. URL sorgu parametrelerinde taşınan ikili veriler için önce Base64 Kodlayıcı ile URL güvenli modda kodlayın, ardından çıktı zaten ek bir yüzde kodlama olmadan URL güvenli olur.

Sıkça Sorulan Sorular

URL kodlama ile Base64 kodlama arasındaki fark nedir?

Yüzde kodlama, güvenli olmayan karakterleri %XX hex dizileri ile değiştirirken güvenli karakterleri olduğu gibi korur, bu nedenle çıktı uzunluğu girdiye benzer. Base64, tüm verileri 64 karakterli bir alfabeye dönüştürerek boyutu %33 artırır ancak sonucu yalnızca güvenli ASCII karakterleri içerir. Yüzde kodlama belirli karakterleri URL güvenli hale getirir; Base64 ise rastgele ikili verileri metin olarak kodlar.

JavaScript'te encodeURI ile encodeURIComponent ne zaman kullanılmalı?
encodeURI() tam bir URL'yi kodlamak için kullanılır - : / ? # & = gibi yapısal karakterleri korur. encodeURIComponent() ise bir URL içindeki bireysel değerleri kodlamak için kullanılır - yapısal karakterleri kodlayarak bunların URL sözdizimi yerine literal veri olarak ele alınmasını sağlar. Şüphe durumunda, kullanıcı tarafından sağlanan herhangi bir girdi için encodeURIComponent() kullanın.
Neden bazı kodlayıcılarda bir boşluk %20 olurken diğerlerinde + oluyor?
%20 bir boşluk için RFC 3986 yüzde kodlamasıdır ve URI yol segmentleri ile sorgu değerleri için doğrudur. Boşluğu temsil eden + işareti application/x-www-form-urlencoded (HTML form gönderimleri) için özeldir ve RFC 3986'dan önce gelir. Her ikisi de kendi bağlamlarında geçerlidir, ancak %20 HTML formlarının dışındaki evrensel standarttır.
URL kodlaması ASCII dışındaki karakterler için çalışır mı?

Evet. ASCII dışındaki karakterler önce UTF-8 byte'larına dönüştürülür, ardından her byte ayrı ayrı yüzde kodlanır. ş (U+015F) karakteri %C5%9F olur. Çince karakter 中 (U+4E2D) %E4%B8%AD olur. Modern tarayıcılar ve sunucular, URL'lerde ASCII dışındaki karakterler için UTF-8 kodlaması bekler.

Bu aracı kullandığımda URL verim sunucularınıza mı gönderiliyor?

Hayır. Tüm kodlama, tarayıcınızda yerel olarak çalışan encodeURI() veya encodeURIComponent() kullanır. URL'ler, sorgu parametreleri, kimlik doğrulama token'ları ve yapıştırdığınız diğer veriler asla sunucularımıza iletilmez.