Whiz Tools

ইউআরএল স্ট্রিং এস্কেপার

URL স্ট্রিং এস্কেপার টুল

পরিচিতি

ওয়েব ডেভেলপমেন্ট এবং ইন্টারনেট যোগাযোগের ক্ষেত্রে, URL (ইউনিফর্ম রিসোর্স লোকেটর) ওয়েবে সম্পদের সনাক্তকরণের জন্য একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। তবে, URL-এ যে অক্ষরগুলি থাকতে পারে তার উপর বিধিনিষেধ রয়েছে। কিছু অক্ষরের বিশেষ অর্থ রয়েছে, যখন অন্যগুলি URL-এ ব্যবহারের জন্য অরক্ষিত, কারণ এগুলি প্রেরণের সময় ভুল ব্যাখ্যা বা ক্ষতির সম্ভাবনা তৈরি করে।

URL এনকোডিং, যা শতাংশ-এনকোডিং নামেও পরিচিত, বিশেষ অক্ষরগুলিকে এমন একটি ফরম্যাটে রূপান্তর করার একটি প্রক্রিয়া যা ইন্টারনেটের মাধ্যমে প্রেরণ করা যেতে পারে। এই টুলটি আপনাকে একটি URL স্ট্রিং ইনপুট করতে এবং বিশেষ অক্ষরগুলি এস্কেপ করতে দেয়, নিশ্চিত করে যে URL বৈধ এবং ওয়েব ব্রাউজার এবং সার্ভার দ্বারা সঠিকভাবে ব্যাখ্যা করা যেতে পারে।

URL এনকোডিং বোঝা

URL এনকোডিং কী?

URL এনকোডিং নিরাপদ ASCII অক্ষরগুলিকে % দ্বারা প্রতিস্থাপন করে এবং তারপরে অক্ষরের ASCII কোডের দুটি হেক্সাডেসিমাল ডিজিট যুক্ত করে। এটি নিশ্চিত করে যে তথ্য ইন্টারনেটের মাধ্যমে পরিবর্তন ছাড়াই প্রেরিত হয়।

যেমন, স্পেস অক্ষর ' ' কে %20 দ্বারা প্রতিস্থাপন করা হয়।

URL এনকোডিং কেন প্রয়োজন?

URL গুলি শুধুমাত্র ASCII অক্ষর সেট ব্যবহার করে ইন্টারনেটে প্রেরণ করা যেতে পারে। যেহেতু URL-এ প্রায়ই এই সেটের বাইরের অক্ষরগুলি থাকে, সেগুলিকে বৈধ ASCII ফরম্যাটে রূপান্তর করতে হবে। URL এনকোডিং নিশ্চিত করে যে বিশেষ অক্ষরগুলি অনিচ্ছাকৃত প্রভাব বা ত্রুটি সৃষ্টি করে না।

এনকোডিংয়ের প্রয়োজনীয় অক্ষর

RFC 3986 স্পেসিফিকেশন অনুসারে, নিম্নলিখিত অক্ষরগুলি URL-এ রিজার্ভ করা হয়েছে এবং যদি সেগুলি আক্ষরিকভাবে ব্যবহৃত হয় তবে শতাংশ-এনকোড করা আবশ্যক:

  • সাধারণ ডেলিমিটার: :, /, ?, #, [, ], @
  • সাব-ডেলিমিটার: !, $, &, ', (, ), *, +, ,, ;, =

এছাড়াও, যেকোনো অ-ASCII অক্ষর, যার মধ্যে ইউনিকোডের অক্ষরগুলি অন্তর্ভুক্ত, এনকোড করা আবশ্যক।

URL এনকোডিং কীভাবে কাজ করে?

এনকোডিং প্রক্রিয়া

  1. বিশেষ অক্ষর চিহ্নিত করুন: URL স্ট্রিংটি পার্স করুন এবং সেসব অক্ষর চিহ্নিত করুন যা অ-সংরক্ষিত ASCII অক্ষর নয় (অক্ষর, সংখ্যা, -, ., _, ~)।

  2. ASCII কোডে রূপান্তর করুন: প্রতিটি বিশেষ অক্ষরের জন্য, এর ASCII বা ইউনিকোড কোড পয়েন্ট পান।

  3. UTF-8 বাইট সিকোয়েন্সে রূপান্তর করুন (যদি প্রয়োজন হয়): অ-ASCII অক্ষরের জন্য, একটি বা একাধিক বাইটে অক্ষরটি UTF-8 এনকোডিং ব্যবহার করে এনকোড করুন।

  4. হেক্সাডেসিমালে রূপান্তর করুন: প্রতিটি বাইটকে এর দুটি ডিজিটের হেক্সাডেসিমাল সমতুল্যে রূপান্তর করুন।

  5. শতাংশ চিহ্নের সাথে প্রিফিক্স করুন: প্রতিটি হেক্সাডেসিমাল বাইটের আগে একটি % চিহ্ন যুক্ত করুন।

উদাহরণ এনকোডিং

  • অক্ষর: ' ' (স্পেস)

    • ASCII কোড: 32
    • হেক্সাডেসিমাল: 20
    • URL এনকোডেড: %20
  • অক্ষর: 'é'

    • UTF-8 এনকোডিং: 0xC3 0xA9
    • URL এনকোডেড: %C3%A9

বিবেচনা করার জন্য প্রান্তিক কেস

  • ইউনিকোড অক্ষর: অ-ASCII অক্ষরগুলিকে UTF-8-এ এনকোড করতে হবে এবং তারপর শতাংশ-এনকোড করতে হবে।

  • ইতিমধ্যে এনকোড করা শতাংশ চিহ্ন: শতাংশ চিহ্নগুলি যা শতাংশ-এনকোডিংয়ের অংশ, সেগুলি পুনরায় এনকোড করা উচিত নয়।

  • কোয়েরি স্ট্রিংয়ে রিজার্ভড অক্ষর: কিছু অক্ষরের বিশেষ অর্থ রয়েছে কোয়েরি স্ট্রিংয়ে এবং কাঠামো পরিবর্তন প্রতিরোধ করতে এনকোড করা উচিত।

URL ডিকোডিং

URL ডিকোডিং কী?

URL ডিকোডিং URL এনকোডিংয়ের বিপরীত প্রক্রিয়া। এটি শতাংশ-এনকোডেড অক্ষরগুলিকে তাদের মূল রূপে রূপান্তর করে, URL-কে মানব এবং সিস্টেম দ্বারা পড়ার যোগ্য করে তোলে।

ডিকোডিং প্রক্রিয়া

  1. শতাংশ-এনকোডিং সিকোয়েন্স চিহ্নিত করুন: URL স্ট্রিংয়ে সমস্ত % চিহ্ন চিহ্নিত করুন যা দুটি হেক্সাডেসিমাল ডিজিটের পরে রয়েছে।

  2. হেক্সাডেসিমাল থেকে বাইটে রূপান্তর করুন: প্রতিটি হেক্সাডেসিমাল মানকে এর সমতুল্য বাইটে রূপান্তর করুন।

  3. UTF-8 বাইটগুলি ডিকোড করুন (যদি প্রয়োজন হয়): মাল্টি-বাইট সিকোয়েন্সগুলির জন্য, বাইটগুলি একত্রিত করুন এবং মূল অক্ষরটি পেতে UTF-8 এনকোডিং ব্যবহার করে ডিকোড করুন।

  4. এনকোডেড সিকোয়েন্সগুলি প্রতিস্থাপন করুন: শতাংশ-এনকোডেড সিকোয়েন্সগুলি ডিকোড করা অক্ষরগুলির সাথে প্রতিস্থাপন করুন।

উদাহরণ ডিকোডিং

  • এনকোডেড: hello%20world

    • %20 একটি স্পেস ' ' এ রূপান্তরিত হয়
    • ডিকোডেড: hello world
  • এনকোডেড: J%C3%BCrgen

    • %C3%A4 UTF-8-এ 'ü' এ রূপান্তরিত হয়
    • ডিকোডেড: Jürgen

URL ডিকোডিংয়ের গুরুত্ব

URL ডিকোডিং ব্যবহারকারীর ইনপুট প্রসেস করার সময়, কোয়েরি প্যারামিটারগুলি পড়ার সময়, বা ওয়েব অনুরোধ থেকে প্রাপ্ত ডেটা ব্যাখ্যা করার সময় অপরিহার্য। এটি নিশ্চিত করে যে URL থেকে সংগৃহীত তথ্য তার সঠিক, উদ্দেশ্যযুক্ত রূপে রয়েছে।

ব্যবহার কেস

ওয়েব ডেভেলপমেন্ট

  • কোয়েরি প্যারামিটার: ত্রুটি বা নিরাপত্তা দুর্বলতা প্রতিরোধ করতে কোয়েরি প্যারামিটারে ব্যবহারকারীর ইনপুট এনকোড করা।

  • পথ প্যারামিটার: URL পাথে গতিশীল ডেটা নিরাপদে অন্তর্ভুক্ত করা।

ডেটা প্রেরণ

  • এপিআই এবং ওয়েব পরিষেবাগুলি: নিশ্চিত করা যে এপিআইতে পাঠানো ডেটা সঠিকভাবে ফরম্যাট করা হয়েছে।

  • আন্তর্জাতিককরণ: বিভিন্ন ভাষার অক্ষরগুলি সহ URL সমর্থন করা।

নিরাপত্তা

  • ইনজেকশন আক্রমণ প্রতিরোধ: ইনপুটগুলি এনকোড করা যাতে ক্রস-সাইট স্ক্রিপ্টিং (XSS) এবং অন্যান্য ইনজেকশন আক্রমণের ঝুঁকি কমানো যায়।

বিকল্পগুলি

যদিও URL এনকোডিং অপরিহার্য, কিছু পরিস্থিতিতে অন্যান্য এনকোডিং পদ্ধতি আরও উপযুক্ত হতে পারে:

  • বেস64 এনকোডিং: URL-এর মধ্যে বাইনারি ডেটা এনকোড করার জন্য বা যখন উচ্চতর তথ্য ঘনত্ব প্রয়োজন।

  • শতাংশ-এনকোডিং ছাড়া UTF-8 এনকোডিং: কিছু সিস্টেম সরাসরি UTF-8 এনকোডিং ব্যবহার করে, তবে এটি সঠিকভাবে পরিচালনা না করলে সমস্যা সৃষ্টি করতে পারে।

আপনার অ্যাপ্লিকেশনের নির্দিষ্ট বিষয়গুলি বিবেচনা করুন যাতে সবচেয়ে উপযুক্ত এনকোডিং পদ্ধতি নির্বাচন করা যায়।

ইতিহাস

URL এনকোডিং 1990-এর দশকে URL এবং URI (ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার) মানগুলির প্রথম স্পেসিফিকেশনগুলির সাথে পরিচিত হয়। বিশেষ অক্ষরগুলি এনকোড করার একটি সঙ্গতিপূর্ণ উপায়ের প্রয়োজনীয়তা বিশ্বব্যাপী ব্যবহৃত বিভিন্ন সিস্টেম এবং অক্ষর সেট থেকে উদ্ভূত হয়।

মূল মাইলফলকগুলি অন্তর্ভুক্ত:

  • RFC 1738 (1994): URL সংজ্ঞায়িত করেছে এবং শতাংশ-এনকোডিং প্রবর্তন করেছে।

  • RFC 3986 (2005): URI সিনট্যাক্স আপডেট করেছে, এনকোডিংয়ের নিয়মগুলি পরিশীলিত করেছে।

সময়ের সাথে সাথে, URL এনকোডিং ওয়েব প্রযুক্তির একটি অবিচ্ছেদ্য অংশ হয়ে উঠেছে, বিভিন্ন সিস্টেম এবং প্ল্যাটফর্মের মধ্যে নির্ভরযোগ্য যোগাযোগ নিশ্চিত করে।

কোড উদাহরণ

নিচে বিভিন্ন প্রোগ্রামিং ভাষায় URL এনকোডিং করার উদাহরণ রয়েছে:

' Excel VBA উদাহরণ
Function URLEncode(ByVal Text As String) As String
    Dim i As Integer
    Dim CharCode As Integer
    Dim Char As String
    Dim EncodedText As String

    For i = 1 To Len(Text)
        Char = Mid(Text, i, 1)
        CharCode = AscW(Char)
        Select Case CharCode
            Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
                EncodedText = EncodedText & Char
            Case Else
                If CharCode < 0 Then
                    ' ইউনিকোড অক্ষরগুলি পরিচালনা করুন
                    EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
                Else
                    EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
                End If
        End Select
    Next i
    URLEncode = EncodedText
End Function

' ব্যবহার:
' =URLEncode("https://example.com/?name=Jürgen")
% MATLAB উদাহরণ
function encodedURL = urlEncode(url)
    import java.net.URLEncoder
    encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
end

% ব্যবহার:
% encodedURL = urlEncode('https://example.com/?name=Jürgen');
## Ruby উদাহরণ
require 'uri'

url = 'https://example.com/path?query=hello world&name=Jürgen'
encoded_url = URI::DEFAULT_PARSER.escape(url)
puts encoded_url
## আউটপুট: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// Rust উদাহরণ
use url::form_urlencoded;

fn main() {
    let url = "https://example.com/path?query=hello world&name=Jürgen";
    let encoded_url = percent_encode(url);
    println!("{}", encoded_url);
    // আউটপুট: https://example.com/path%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
}

fn percent_encode(input: &str) -> String {
    use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
    utf8_percent_encode(input, NON_ALPHANUMERIC).to_string()
}
## Python উদাহরণ
import urllib.parse

url = 'https://example.com/path?query=hello world&name=Jürgen'
encoded_url = urllib.parse.quote(url, safe=':/?&=')
print(encoded_url)
## আউটপুট: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// JavaScript উদাহরণ
const url = 'https://example.com/path?query=hello world&name=Jürgen';
const encodedURL = encodeURI(url);
console.log(encodedURL);
// আউটপুট: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// Java উদাহরণ
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        String url = "https://example.com/path?query=hello world&name=Jürgen";
        String encodedURL = URLEncoder.encode(url, StandardCharsets.UTF_8.toString());
        // স্পেসের জন্য "+" কে "%20" দ্বারা প্রতিস্থাপন করুন
        encodedURL = encodedURL.replace("+", "%20");
        System.out.println(encodedURL);
        // আউটপুট: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
    }
}
// C# উদাহরণ
using System;
using System.Net;

class Program
{
    static void Main()
    {
        string url = "https://example.com/path?query=hello world&name=Jürgen";
        string encodedURL = Uri.EscapeUriString(url);
        Console.WriteLine(encodedURL);
        // আউটপুট: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
    }
}
<?php
// PHP উদাহরণ
$url = 'https://example.com/path?query=hello world&name=Jürgen';
$encodedURL = urlencode($url);
echo $encodedURL;
// আউটপুট: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
?>
// Go উদাহরণ
package main

import (
    "fmt"
    "net/url"
)

func main() {
    urlStr := "https://example.com/path?query=hello world&name=Jürgen"
    encodedURL := url.QueryEscape(urlStr)
    fmt.Println(encodedURL)
    // আউটপুট: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
}
// Swift উদাহরণ
import Foundation

let url = "https://example.com/path?query=hello world&name=Jürgen"
if let encodedURL = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
    print(encodedURL)
    // আউটপুট: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
}
## R উদাহরণ
url <- "https://example.com/path?query=hello world&name=Jürgen"
encodedURL <- URLencode(url, reserved = TRUE)
print(encodedURL)
## আউটপুট: https://example.com/path?query=hello%20world&name=J%C3%BCrgen

নোট: আউটপুট প্রতিটি ভাষা কীভাবে রিজার্ভড অক্ষর এবং স্পেসগুলি পরিচালনা করে তার উপর ভিত্তি করে কিছুটা ভিন্ন হতে পারে (যেমন, স্পেসগুলি %20 বা + হিসাবে এনকোড করা)।

URL এনকোডিং প্রক্রিয়ার SVG চিত্র

URL এনকোডিং প্রক্রিয়া মূল URL বিশেষ অক্ষর চিহ্নিত করুন URL এনকোড করুন উদাহরণ: ইনপুট: https://example.com/über uns আউটপুট: https://example.com/%C3%BCber%20uns

নিরাপত্তা বিবেচনা

সঠিক URL এনকোডিং এবং ডিকোডিং নিরাপত্তার জন্য অত্যন্ত গুরুত্বপূর্ণ:

  • ইনজেকশন আক্রমণ প্রতিরোধ: ব্যবহারকারীর ইনপুট এনকোড করা ম্যালিশিয়াস কোডের কার্যকরী হওয়া প্রতিরোধ করতে সাহায্য করে, যেমন ক্রস-সাইট স্ক্রিপ্টিং (XSS) এবং SQL ইনজেকশন।

  • ডেটার অখণ্ডতা: নিশ্চিত করে যে ডেটা পরিবর্তন বা ক্ষতির ছাড়াই প্রেরিত হয়।

  • মানদণ্ডের সাথে সম্মতি: এনকোডিং মানদণ্ড মেনে চলা সিস্টেমগুলির মধ্যে আন্তঃক্রিয়াশীলতার সমস্যা এড়ায়।

রেফারেন্স

  1. RFC 3986 - ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার (URI): https://tools.ietf.org/html/rfc3986
  2. URL এনকোডিং কী এবং এটি কীভাবে কাজ করে? https://www.urlencoder.io/learn/
  3. শতাংশ-এনকোডিং: https://en.wikipedia.org/wiki/Percent-encoding
  4. URL মানদণ্ড: https://url.spec.whatwg.org/
  5. URI.escape অব্যবহৃত: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated

উপসংহার

URL এনকোডিং ওয়েব ডেভেলপমেন্ট এবং ইন্টারনেট যোগাযোগের একটি অপরিহার্য দিক। বিশেষ অক্ষরগুলিকে নিরাপদ ফরম্যাটে রূপান্তর করে, এটি নিশ্চিত করে যে URL-গুলি ব্রাউজার এবং সার্ভার দ্বারা সঠিকভাবে ব্যাখ্যা করা হয়, ডেটা প্রেরণের অখণ্ডতা এবং নিরাপত্তা বজায় রাখে। এই টুলটি আপনার URL-এ বিশেষ অক্ষরগুলি এস্কেপ করার একটি সুবিধাজনক উপায় প্রদান করে, সামঞ্জস্যতা বাড়ায় এবং সম্ভাব্য ত্রুটি বা নিরাপত্তা দুর্বলতা প্রতিরোধ করে।

মতামত