logo
GeekFormat

URL Kodlama

Kodlama Kodu
URL Girişi
0 chars

Ücretsiz çevrimiçi URL kodla/çöz aracı. encodeURIComponent/encodeURI/RFC 3986 4 modunu destekler, kodlanmış karakterleri gerçek zamanlı vurgular, çok satırlı toplu işlem modu, yalnızca parametre değerlerini kodlamak için Query Only. Tarayıcıda yerel işlem, sıfır veri yükleme.

İlgili Öneriler

Kullanım senaryoları

  • API parametre hata ayıklama: arayüz imza uyuşmazlığı sorunlarını çözmek için encodeURIComponent ve encodeURI çıktılarını karşılaştırma
  • Günlük çözme: günlüklerdeki URL kodlu içeriği toplu olarak çözerek okunabilir metni geri yükleme
  • URL oluşturma: Query Only modu anahtar adlarını korur ve yalnızca değerleri kodlar, manuel birleştirmede format hatalarını önler
  • Frontend geliştirme: vurgulama hangi karakterlerin kaçış yapıldığını anlamaya yardımcı olur, sayfa yönlendirmelerinde hata ayıklamak için kullanışlıdır
  • Veri taşıma: eski sistemlerden dışa aktarılan URL kodlu verileri toplu olarak işleyerek yeni formata dönüştürme

Özellikler

  • Dört kodlama modu: tek tıklamayla encodeURIComponent / encodeURI / full / RFC 3986 arasında geçiş, çıktı farklarını gerçek zamanlı karşılaştırma
  • Kodlama vurgulama: kaçış yapılmış %XX karakterlerini gerçek zamanlı vurgular, kehribar rengi işaretleme kodlama sonuçlarını anında görünür kılar
  • Toplu işlem modu: çok satırlı toplu kodlama/çözme desteği, her satır bağımsız olarak işlenir, günlükler veya toplu veriler için idealdir
  • Query Only modu: URL'nin yalnızca parametre değeri kısmını (eşittir işaretinden sonrasını) kodlar, anahtar adları, karakterler ve yol yapısını dokunulmadan bırakır
  • Gerçek zamanlı debounce: 300 ms içinde otomatik kodlama/çözme, düğmelere basmaya gerek yok, yazarken sonuçlar görünür
  • Karakter sayacı: girilen karakter sayısını gerçek zamanlı gösterir, API parametre uzunluğu sınırlarını kontrol etmek için kullanışlıdır

Nasıl Kullanılır

  1. Kodlamak/çözmek istediğiniz URL'yi veya metni girin veya yapıştırın
  2. Kodlama yönünü (Kodla/Çöz) ve modu seçin (Component / URI / full / RFC 3986)
  3. Çok satırlı veriler için toplu işlem modunu veya yalnızca parametre değeri kodlaması için Query Only'yi açın
  4. Vurgulanan sonucu kontrol edin ve kodlanmış dizeyi API çağrılarında veya URL oluşturmada kullanmak üzere kopyalayın

Sık Sorulan Sorular

encodeURIComponent ve encodeURI arasındaki fark nedir?

encodeURIComponent tüm güvensiz karakterleri kodlar (&, =, ?, vb. dahil), bu nedenle tek tek parametre değerlerini kodlamak için uygundur. encodeURI URL'nin yapısal karakterlerini korur (:, /, ?, #, vb.), bu nedenle tam URL'leri kodlamak için uygundur. Kullanım senaryosu: parametre değerleri için Component, tam URL'ler için URI.

RFC 3986 ile standart kodlama arasındaki fark nedir?

RFC 3986 güncellenmiş URL standart sürümüdür ve tilde ~'yi kodlanması gerekmeyen güvenli bir karakter olarak kabul eder, eski standartlar ise bunu %7E olarak kodlar. RFC 3986 kullanmak bazı sunucularda ayrıştırma farklılıklarını önleyebilir ve daha iyi uyumluluk sağlayabilir.

Query Only modu hangi senaryolarda kullanılır?

?name=张三&city=北京 gibi bir URL query string'iniz olduğunda ve anahtar adlarını ve karakterleri değiştirmeden yalnızca parametre değerlerini kodlamak istediğinizde kullanılır. Bu durumda name ve city değişmeden kalır ve değerler %E5%BC%A0%E4%B8%89 ve %E5%8C%97%E4%BA%AC olarak kodlanır.

Boşluklar + olarak mı yoksa %20 olarak mı kodlanmalı?

application/x-www-form-urlencoded formatında (HTML form gönderimi) boşluklar + olarak kodlanır. Ancak URL yollarında ve encodeURIComponent'te boşluklar her zaman %20 olarak kodlanır. Bu araç varsayılan olarak %20 formatını kullanır.

Neden farklı araçlar aynı Çince karakter için farklı sonuçlar veriyor?

Bu, karakter kodlama yöntemine bağlıdır. Bu araç UTF-8 kodlaması kullanır (web standardı), Çince karakter '中' %E4%B8%AD olarak kodlanır. Diğer araçlar GBK kodlaması kullanıyorsa sonuç %D6%D0 olacaktır. Web URL'leri için her zaman UTF-8 kullanılması önerilir.

Kodlama vurgulama ne içindir?

%XX formatında kodlanmış karakterleri (örneğin boşluk→%20) gerçek zamanlı olarak vurgular, kodlama kurallarını anlamaya ve sorunları çözmeye yardımcı olur. Harfler ve rakamlar kodlanmayan güvenli karakterlerdir, yalnızca Çince ve özel karakterler kodlanır.

% karakterinin kendisi kodlanmalı mı?

Evet. %, URL kodlamasında kaçış karakterinin başlangıç karakteridir. Değişmez bir % bir parametre değerinde görünüyorsa, %25 olarak kodlanmalıdır; aksi takdirde bir kodlama öneki olarak yanlış yorumlanır ve ayrıştırma hatalarına neden olur. Örn. 100%, 100%25 olarak kodlanmalıdır.

URL kodlama nedir?

URL kodlama (yüzde kodlama), URL'deki güvensiz karakterleri %XX formatına dönüştürme işlemidir. URL'ler yalnızca küçük bir ASCII karakter alt kümesini içerebilir (harfler, rakamlar, -_.~), diğer tüm karakterler (Çince, boşluklar, özel karakterler dahil) URL'de iletilmeden önce kodlanmalıdır. Örn. boşluk %20 olur, Çince karakter '中' %E4%B8%AD olur.

**encodeURIComponent vs encodeURI**: Bunlar en çok kullanılan iki kodlama işlevidir. encodeURIComponent daha kapsamlı kodlar, &, =, ? gibi parametre ayırıcıları dahil, bu nedenle tek tek parametre değerlerini kodlamak için uygundur. encodeURI URL yapısını korur (scheme://, yol, /, ?, #), bu nedenle tam URL'leri kodlamak için uygundur. Yanlış kullanım parametre ayrıştırma hatalarına yol açar.

**RFC 3986 vs eski standartlar**: RFC 3986 tilde ~'yi kodlanması gerekmeyen güvenli bir karakter olarak kabul eder, erken standartlar ise bunu %7E olarak kodlar. RFC 3986 kullanmak gereksiz kaçışı azaltır, URL okunabilirliğini artırır ve bazı sunucularda %7E ayrıştırma sorunlarını önler.

**Query Only modu**: URL query string'inde yalnızca parametre değerlerini kodlamak, anahtar adlarını, eşittir işaretlerini ve & karakterlerini değiştirmemek istediğinizde kullanılır. Örn. ?name=张三, ?name=%E5%BC%A0%E4%B8%89 olarak kodlanır, anahtar adları okunabilir kalır ve yalnızca değerler kodlanır.

**Kodlama vurgulama**: %XX formatındaki karakterleri gerçek zamanlı olarak kehribar renginde vurgular, böylece kullanıcılar hangi karakterlerin kodlandığını hemen görebilir. Bu, kodlama kurallarını anlamaya yardımcı olur: harfler ve rakamlar genellikle kodlanmayan güvenli karakterlerdir, yalnızca Çince ve özel karakterler kodlanır. Tüm hesaplamalar tarayıcıda yerel olarak yapılır, hiçbir veri yüklenmez.

术语表

Yüzde kodlama (Percent-encoding)
URL kodlamasının resmi adı, karakterleri % ve ardından iki onaltılık basamakla temsil eden bir kodlama yöntemidir. Örn. boşluk %20 olur, Çince karakter '中' %E4%B8%AD olur.Wikipedia - Percent-encoding
encodeURIComponent
Yerleşik JavaScript işlevi, A-Z a-z 0-9 - _ . ! ~ * ' ( ) dışındaki tüm karakterleri kodlar. En çok tek tek sorgu parametresi değerlerini kodlamak için kullanılır.
encodeURI
Yerleşik JavaScript işlevi, URL'nin yapısal karakterlerini korur (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) ve yalnızca gerçekten kodlanması gereken karakterleri kodlar. Tam URL'leri kodlamak için kullanılır.
RFC 3986
URI genel sözdizimi için en son IETF standardı (2005), URL kodlama kurallarını tanımlar ve tilde ~'yi ayrılmamış karakter olarak sınıflandırır (kodlama gerekmez). Eski RFC 2396 ve RFC 1738'in yerini alır.RFC 3986
Ayrılmış Karakterler (Reserved Characters)
URL'de özel anlamı olan karakterler, örneğin : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Bu karakterler veri olarak kullanıldıklarında kodlanmalıdır, ancak yapısal konumlarında değillerse.
Ayrılmamış Karakterler (Unreserved Characters)
URL'nin herhangi bir konumunda kodlama olmadan kullanılabilecek güvenli karakterler, RFC 3986'ya göre A-Z, a-z, 0-9, -, _, ., ~ dahil.
Query String
URL'nin ? işaretinden sonraki kısmı, & ile ayrılmış key=value çiftlerinden oluşur. Örn. ?name=张三&age=20'de name=张三 ve age=20 iki parametredir.
URLSearchParams
Modern tarayıcılar tarafından URL query string'lerini kolayca oluşturmak ve ayrıştırmak için sağlanan API, otomatik kodlama ve çözme ile. Manuel dize birleştirmeden daha güvenli ve güvenilirdir.
application/x-www-form-urlencoded
HTML formları için varsayılan gönderim formatı, boşlukların %20 yerine + olarak kodlandığı, encodeURIComponent'ten biraz farklıdır. Sunucu çerçeveleri genellikle her iki formatı da otomatik olarak işler.
UTF-8 Kodlama
Web için standart karakter kodlama yöntemi. URL kodlamasında, ASCII olmayan karakterler (Çince, emoji gibi) önce UTF-8 bayt dizilerine dönüştürülür, ardından her bayt %XX formatında kodlanır.

4 Kodlama Modunda Kaçış Yapılan Karakterlerin Karşılaştırması

KarakterAnlamıencodeURIComponentencodeURIRFC 3986
BoşlukBoşluk%20%20%20
!Ünlem işareti%21!%21
#Parça tanımlayıcı%23#%23
$Dolar işareti%24$%24
&Parametre ayırıcı%26&%26
'Tek tırnak%27'%27
(Sol parantez%28(%28
)Sağ parantez%29)%29
*Yıldız%2A*%2A
+Artı işareti%2B+%2B
,Virgül%2C,%2C
/Yol ayırıcı%2F/%2F
:İki nokta üst üste%3A:%3A
;Noktalı virgül%3B;%3B
=Eşittir işareti%3D=%3D
?Soru işareti%3F?%3F
@At işareti%40@%40
~Tilde%7E%7E~

Yaygın Ayrılmış URL Karakterleri Hızlı Başvuru

KodlanmışOrijinal KarakterURL'de Kullanımı
%20(boşluk)Boşluk
%21!Alt ayırıcı
%23#Parça tanımlayıcı (hash)
%25%Kaçış karakterinin kendisi
%26&Sorgu parametresi ayırıcı
%2B+Artı işareti / formda boşluk
%2F/Yol ayırıcı
%3A:Şema ayırıcı
%3D=Anahtar-değer ayırıcı
%3F?Query string başlangıcı
%40@Kimlik/e-posta ayırıcı
%5B[Dizi parametresi (RFC 3986)

Code Examples

JavaScript'te URL Kodlama/Çözme

// encodeURIComponent: tek tek parametre değerlerini kodlar (en çok kullanılır)
const param = encodeURIComponent('张三&李四');
console.log(param); // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

// encodeURI: tam URL'yi kodlar (yapısal karakterleri korur :/?#&=)
const url = encodeURI('https://example.com/search?q=merhaba dünya');
console.log(url);

// Çözme
const decoded = decodeURIComponent(param);
console.log(decoded); // 张三&李四

// RFC 3986 uyumlu (~ kodlanmaz)
function rfc3986Encode(str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase());
}

// URLSearchParams API (modern yöntem, otomatik kodlama)
const params = new URLSearchParams({ name: '张三', city: '北京' });
console.log(params.toString());
// name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Python'da URL Kodlama/Çözme

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

# quote: encodeURIComponent'e benzer
encoded = quote('张三&李四')
print(encoded)  # %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

# RFC 3986 modu (~ varsayılan olarak kodlanmaz)
print(quote('hello~world'))  # hello~world

# quote_plus: boşluklar + olarak kodlanır (form formatı)
print(quote_plus('hello world'))  # hello+world

# Çözme
print(unquote(encoded))  # 张三&李四

# urlencode: query string oluşturma
params = urlencode({'name': '张三', 'city': '北京'})
print(params)
# name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Java'da URL Kodlama/Çözme

import java.net.URLEncoder;
import java.net.URLDecoder;
import java.net.URI;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        // URL kodlama (URLEncoder - form formatı, boşluklar + olur)
        String encoded = URLEncoder.encode("张三&李四", "UTF-8");
        System.out.println(encoded);
        // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

        // Çözme
        String decoded = URLDecoder.decode(encoded, "UTF-8");
        System.out.println(decoded); // 张三&李四

        // Tam URL oluşturma (URI sınıfı kodlamayı otomatik halleder)
        URI uri = new URI("https", "example.com", "/search", "q=merhaba", null);
        System.out.println(uri.toASCIIString());
    }
}

Authoritative References