Online Tool for Escaping Special Characters in URLs
Özel karakterleri bir URL dizesinde kaçırmak için çevrimiçi bir araç. Bir URL girin ve bu araç, özel karakterleri kaçırarak kodlayacak, böylece web uygulamalarında güvenli bir şekilde kullanılmasını sağlayacaktır.
URL Dize Kaçırıcı
Belgeler
URL Dize Kaçırıcı Aracı
Giriş
Web geliştirme ve İnternet iletişiminde URL'ler (Uniform Resource Locators - Tekdüzen Kaynak Bulucular) web üzerindeki kaynakları tanımlamada kritik bir rol oynar. Ancak, URL'lerin içerebileceği karakterler üzerinde kısıtlamalar vardır. Belirli karakterlerin özel anlamları vardır, diğerleri ise iletim sırasında yanlış yorumlanma veya bozulma olasılığı nedeniyle URL'lerde güvenli değildir.
URL kodlaması, aynı zamanda yüzde kodlaması olarak da bilinir, özel karakterleri İnternet üzerinden iletilebilecek bir formata dönüştürmek için kullanılan bir mekanizmadır. Bu araç, bir URL dizesi girmenize ve özel karakterleri kaçırmanıza olanak tanır, böylece URL'nin geçerli olmasını ve web tarayıcıları ve sunucular tarafından doğru bir şekilde yorumlanmasını sağlar.
URL Kodlamasını Anlamak
URL Kodlaması Nedir?
URL kodlaması, güvenli olmayan ASCII karakterlerini %
işareti ve karakterin ASCII kodunu temsil eden iki onaltılı rakam ile değiştirmeyi içerir. Bu, bilginin İnternet üzerinden değiştirilmeden iletilmesini garanti eder.
Örneğin, boşluk karakteri ' '
%20
ile değiştirilir.
URL Kodlaması Neden Gereklidir?
URL'ler yalnızca ASCII karakter seti kullanılarak İnternet üzerinden gönderilebilir. URL'ler genellikle bu setin dışındaki karakterleri içerdiğinden, geçerli bir ASCII formatına dönüştürülmeleri gerekir. URL kodlaması, özel karakterlerin web isteklerinde istenmeyen etkiler veya hatalar yaratmasını önler.
Kodlanması Gereken Karakterler
RFC 3986 spesifikasyonuna göre, URL'lerde rezerve edilmiş olan ve kelime anlamıyla kullanılmaları gerekiyorsa yüzde kodlaması yapılması gereken karakterler şunlardır:
- Genel ayırıcılar:
:
,/
,?
,#
,[
,]
,@
- Alt ayırıcılar:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Ayrıca, Unicode'daki dahil olmak üzere, ASCII dışındaki herhangi bir karakter de kodlanmalıdır.
URL Kodlaması Nasıl Çalışır?
Kodlama Süreci
-
Özel Karakterleri Belirle: URL dizesini ayrıştırın ve rezerve edilmemiş ASCII karakterleri (harfler, rakamlar,
-
,.
,_
,~
) olmayan karakterleri belirleyin. -
ASCII Koduna Dönüştür: Her özel karakter için ASCII veya Unicode kod noktasını alın.
-
UTF-8 Bayt Dizisine Dönüştür (gerekirse): ASCII dışındaki karakterler için, karakteri bir veya daha fazla bayta UTF-8 kodlaması kullanarak kodlayın.
-
Onaltılıya Dönüştür: Her baytı iki haneli onaltılı karşılığına dönüştürün.
-
Yüzde Sembolü ile Ön Ekleyin: Her onaltılı baytın önüne
%
işareti ekleyin.
Örnek Kodlama
-
Karakter:
' '
(Boşluk)- ASCII Kodu:
32
- Onaltılı:
20
- URL Kodlanmış:
%20
- ASCII Kodu:
-
Karakter:
'é'
- UTF-8 Kodlaması:
0xC3 0xA9
- URL Kodlanmış:
%C3%A9
- UTF-8 Kodlaması:
Dikkate Alınması Gereken Kenar Durumlar
-
Unicode Karakterler: ASCII dışındaki karakterler UTF-8'de kodlanmalı ve ardından yüzde kodlaması yapılmalıdır.
-
Zaten Kodlanmış Yüzde İşaretleri: Yüzde işaretleri, yüzde kodlamaları parçası olduğunda yeniden kodlanmamalıdır.
-
Sorgu Dize İçindeki Rezerve Edilmiş Karakterler: Belirli karakterler sorgu dizelerinde özel anlamlara sahiptir ve yapıyı değiştirmemek için kodlanmalıdır.
URL Çözme
URL Çözme Nedir?
URL çözme, URL kodlamasının ters sürecidir. Yüzde kodlaması yapılmış karakterleri orijinal biçimlerine geri döndürerek URL'yi okunabilir ve insanlar ile sistemler tarafından yorumlanabilir hale getirir.
Çözme Süreci
-
Yüzde Kodlama Dizilerini Belirle: URL dizesindeki tüm
%
sembollerini ve ardından gelen iki onaltılı rakamı bulun. -
Onaltılıyı Baytlara Dönüştür: Her onaltılı değeri karşılık gelen bayta çevirin.
-
UTF-8 Baytlarını Çöz (gerekirse): Çok baytlı diziler için, baytları birleştirin ve orijinal karakteri elde etmek için UTF-8 kodlaması kullanarak çözün.
-
Kodlanmış Dizileri Değiştir: Yüzde kodlaması yapılmış dizileri, çözülmüş karakterlerle değiştirin.
Örnek Çözme
-
Kodlanmış:
hello%20world
%20
bir boşluğa' '
dönüşür- Çözülmüş:
hello world
-
Kodlanmış:
J%C3%BCrgen
%C3%A4
UTF-8'de'ü'
ye dönüşür- Çözülmüş:
Jürgen
URL Çözmenin Önemi
URL çözme, URL'lerden kullanıcı girişlerini işlerken, sorgu parametrelerini okurken veya web isteklerinden alınan verileri yorumlarken gereklidir. URL'den çıkarılan bilginin doğru, niyet edilen biçimde olmasını sağlar.
Kullanım Durumları
Web Geliştirme
-
Sorgu Parametreleri: Hataları veya güvenlik açıklarını önlemek için sorgu parametrelerindeki kullanıcı girişlerini kodlama.
-
Yol Parametreleri: URL yollarında dinamik verileri güvenli bir şekilde dahil etme.
Veri İletimi
-
API'ler ve Web Servisleri: API'lere gönderilen verilerin düzgün formatlandığından emin olma.
-
Uluslararasılaştırma: Farklı dillerdeki karakterleri içeren URL'leri destekleme.
Güvenlik
- Enjeksiyon Saldırılarını Önleme: Girişleri kodlayarak çapraz site betikleme (XSS) ve diğer enjeksiyon saldırıları riskini azaltma.
Alternatifler
URL kodlaması gerekli olsa da, diğer kodlama yöntemlerinin daha uygun olabileceği senaryolar vardır:
-
Base64 Kodlama: URL'ler içinde ikili verileri kodlamak veya daha yüksek bilgi yoğunluğu gerektiğinde kullanılır.
-
Yüzde Kodlaması Olmadan UTF-8 Kodlama: Bazı sistemler doğrudan UTF-8 kodlaması kullanır, ancak bu uygun şekilde işlenmediğinde sorunlara yol açabilir.
Uygulamanızın spesifik özelliklerini göz önünde bulundurarak en uygun kodlama yöntemini seçin.
Tarihçe
URL kodlaması, 1990'ların başlarında URL ve URI (Tekdüzen Kaynak Tanımlayıcı) standartlarının erken spesifikasyonları ile tanıtıldı. Özel karakterleri kodlamak için tutarlı bir yol ihtiyacı, dünya çapında kullanılan çeşitli sistemler ve karakter setlerinden kaynaklandı.
Önemli dönüm noktaları şunlardır:
-
RFC 1738 (1994): URL'leri tanımladı ve yüzde kodlamasını tanıttı.
-
RFC 3986 (2005): URI sözdizimini güncelledi, kodlama kurallarını rafine etti.
Zamanla, URL kodlaması web teknolojilerinin ayrılmaz bir parçası haline geldi ve farklı sistemler ve platformlar arasında güvenilir iletişimi sağladı.
Kod Örnekleri
İşte çeşitli programlama dillerinde URL kodlaması yapmanın örnekleri:
1' Excel VBA Örneği
2Function URLEncode(ByVal Text As String) As String
3 Dim i As Integer
4 Dim CharCode As Integer
5 Dim Char As String
6 Dim EncodedText As String
7
8 For i = 1 To Len(Text)
9 Char = Mid(Text, i, 1)
10 CharCode = AscW(Char)
11 Select Case CharCode
12 Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
13 EncodedText = EncodedText & Char
14 Case Else
15 If CharCode < 0 Then
16 ' Unicode karakterlerini işleme
17 EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
18 Else
19 EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
20 End If
21 End Select
22 Next i
23 URLEncode = EncodedText
24End Function
25
26' Kullanım:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% MATLAB Örneği
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Kullanım:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Ruby Örneği
2require 'uri'
3
4url = 'https://example.com/path?query=hello world&name=Jürgen'
5encoded_url = URI::DEFAULT_PARSER.escape(url)
6puts encoded_url
7## Çıktı: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Rust Örneği
2use url::form_urlencoded;
3
4fn main() {
5 let url = "https://example.com/path?query=hello world&name=Jürgen";
6 let encoded_url = percent_encode(url);
7 println!("{}", encoded_url);
8 // Çıktı: https://example.com/path%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
9}
10
11fn percent_encode(input: &str) -> String {
12 use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
13 utf8_percent_encode(input, NON_ALPHANUMERIC).to_string()
14}
15
1## Python Örneği
2import urllib.parse
3
4url = 'https://example.com/path?query=hello world&name=Jürgen'
5encoded_url = urllib.parse.quote(url, safe=':/?&=')
6print(encoded_url)
7## Çıktı: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// JavaScript Örneği
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Çıktı: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Java Örneği
2import java.net.URLEncoder;
3import java.nio.charset.StandardCharsets;
4
5public class URLEncodeExample {
6 public static void main(String[] args) throws Exception {
7 String url = "https://example.com/path?query=hello world&name=Jürgen";
8 String encodedURL = URLEncoder.encode(url, StandardCharsets.UTF_8.toString());
9 // Boşluklar için "+" yerine "%20" ile değiştir
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Çıktı: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// C# Örneği
2using System;
3using System.Net;
4
5class Program
6{
7 static void Main()
8 {
9 string url = "https://example.com/path?query=hello world&name=Jürgen";
10 string encodedURL = Uri.EscapeUriString(url);
11 Console.WriteLine(encodedURL);
12 // Çıktı: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// PHP Örneği
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Çıktı: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Go Örneği
2package main
3
4import (
5 "fmt"
6 "net/url"
7)
8
9func main() {
10 urlStr := "https://example.com/path?query=hello world&name=Jürgen"
11 encodedURL := url.QueryEscape(urlStr)
12 fmt.Println(encodedURL)
13 // Çıktı: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Swift Örneği
2import Foundation
3
4let url = "https://example.com/path?query=hello world&name=Jürgen"
5if let encodedURL = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
6 print(encodedURL)
7 // Çıktı: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## R Örneği
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Çıktı: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
Not: Çıktı, her dilin rezerve edilmiş karakterleri ve boşlukları nasıl işlediğine bağlı olarak biraz farklılık gösterebilir (örneğin, boşlukları %20
veya +
olarak kodlama).
URL Kodlama Sürecinin SVG Diyagramı
Güvenlik Hususları
Doğru URL kodlaması ve çözümü güvenlik açısından kritik öneme sahiptir:
-
Enjeksiyon Saldırılarını Önleme: Kullanıcı girişlerini kodlamak, kötü niyetli kodların çalıştırılmasını önlemeye yardımcı olur ve çapraz site betikleme (XSS) ve SQL enjeksiyonu gibi riskleri azaltır.
-
Veri Bütünlüğü: Verilerin değiştirilmeden veya bozulmadan iletilmesini sağlar.
-
Standartlara Uyum: Kodlama standartlarına uymak, sistemler arasında uyumsuzluk sorunlarını önler.
Referanslar
- RFC 3986 - Tekdüzen Kaynak Tanımlayıcı (URI): https://tools.ietf.org/html/rfc3986
- URL Kodlaması Nedir ve Nasıl Çalışır? https://www.urlencoder.io/learn/
- Yüzde Kodlama: https://en.wikipedia.org/wiki/Percent-encoding
- URL Standardı: https://url.spec.whatwg.org/
- URI.escape geçersizdir: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Sonuç
URL kodlaması, web geliştirme ve İnternet iletişiminin temel bir yönüdür. Özel karakterleri güvenli bir formata dönüştürerek, URL'lerin tarayıcılar ve sunucular tarafından doğru bir şekilde yorumlanmasını sağlar, veri iletiminin bütünlüğünü ve güvenliğini korur. Bu araç, URL'lerinizdeki özel karakterleri kaçırmak için kullanışlı bir yol sunar, uyumluluğu artırır ve potansiyel hataları veya güvenlik açıklarını önler.
Geribildirim
Bu aracı hakkında geri bildirim vermeye başlamak için geri bildirim toast'una tıklayın