কোয়েরি-স্ট্রিং মান তৈরি করা
?q=...-এ আপনি যে কোনো ইউজার ইনপুট রাখেন সেটি অবশ্যই Component মোড দিয়ে এনকোড করতে হবে। URI মোড = এবং & raw রেখে দিতো, এবং মানের মধ্যে এগুলো থাকলে আপনার URL ভেঙে যেতো।
যেকোনো টেক্সটকে percent-encoded URL-সেফ স্ট্রিংয়ে এনকোড করুন, অথবা এনকোড করা URL-কে আবার সাধারণ টেক্সটে ডিকোড করুন। লাইভ প্রিভিউ, UTF-8 সেফ, এবং পুরোটাই আপনার ব্রাউজারের মধ্যে চলে।
Component (encodeURIComponent) unreserved নয় এমন প্রতিটি ক্যারেক্টারকে এস্কেপ করে — কোয়েরি-স্ট্রিং মান, path segment, বা যেকোনো একটি ফিল্ডের জন্য সবচেয়ে নিরাপদ। URI (encodeURI) URL স্ট্রাকচারের ক্যারেক্টারগুলো (:/?#=&) বজায় রাখে — পুরো একটি URL-এর জন্য এটি ব্যবহার করুন। Form (application/x-www-form-urlencoded) হলো Component + স্পেস '+' হয়ে যায় — যা HTML form ব্যবহার করে।
RFC 3986 এমন কিছু "unreserved" ক্যারেক্টার নির্ধারণ করে যেগুলো এনকোড করার দরকার নেই: A-Z a-z 0-9 - _. ~। বাকি সবকিছু percent-encode হয়। encodeURIComponent অতিরিক্তভাবে :/?#&= এনকোড করে যেগুলো encodeURI স্পর্শ করে না। কোয়েরি মান বনাম পুরো URL এনকোড করার সময় এই পার্থক্যটি গুরুত্বপূর্ণ।
এখানে একটি টেক্সট ফাইল ড্রপ করুন, অথবা ব্রাউজ করতে ক্লিক করুন
যেকোনো UTF-8 টেক্সট ফাইল:.txt,.csv,.json,.url,.log
দ্রুত, নির্ভুল, শুধুমাত্র ব্রাউজারে চলে — ডেভেলপার, কপিরাইটার, এবং যে কেউ URL ডিবাগ করছেন তাদের জন্য তৈরি।
আপনি কী এনকোড করছেন তার ওপর নির্ভর করে Component, Full URI, বা Form মোড বেছে নিন — কোয়েরি-স্ট্রিং মান, পুরো একটি URL, অথবা একটি HTML form payload।
প্রতিটি এনকোড এবং ডিকোড আপনার ব্রাউজারে নেটিভ JavaScript ব্যবহার করে হয়। আপনার টেক্সট ও URL কখনো আপনার ডিভাইস ছাড়ে না।
প্রতিটি কীস্ট্রোকে আউটপুট আপডেট হয় — কোনো "Encode" বাটনে ক্লিক করতে হয় না, সার্ভারে কোনো রাউন্ড-ট্রিপও হয় না।
ইমোজি, CJK অক্ষর, অ্যাকসেন্টযুক্ত ল্যাটিন, এবং সিরিলিক অক্ষর encodeURIComponent এবং উল্টোদিকে নির্ভুলভাবে রাউন্ড-ট্রিপ করে।
ডিকোড করার সময় ইচ্ছেমতো '+' কে স্পেস হিসেবে ধরুন — যা HTML form-এ application/x-www-form-urlencoded-এর প্রচলিত নিয়ম।
একবারে এনকোড বা ডিকোড করতে.txt,.csv, বা.json ফাইল ড্রপ করুন। আউটপুট পরিষ্কার.txt হিসেবে ডাউনলোড হয়।
তিনটি নেটিভ ব্রাউজার API, তিনটি মোড, সবগুলোই আপনি যে পেজটি পড়ছেন তার ভেতরে চলছে।
প্রতিটি কীস্ট্রোকে ইনপুট স্ট্রিং একটি ছোট JavaScript ফাংশনে পাঠানো হয়। কোনো debounce নেই, কোনো API কল নেই, কোনো fetch নেই — ফাংশনটি আপনার ব্রাউজার ট্যাবে synchronously চলে।
Component encodeURIComponent কল করে — A-Z a-z 0-9 - _. ~ ছাড়া বাকি সবকিছু এস্কেপ করে। URI encodeURI কল করে — :/?#=& বজায় রাখে যাতে একটি পুরো URL বৈধ থাকে। Form encodeURIComponent ব্যবহার করে এবং application/x-www-form-urlencoded অনুযায়ী স্পেসকে + দিয়ে প্রতিস্থাপন করে।
encodeURIComponent এবং encodeURI উভয়ই অভ্যন্তরীণভাবে স্ট্রিংটিকে UTF-8 বাইটে রূপান্তর করে এবং তারপর প্রতিটি অনিরাপদ বাইটকে percent-encode করে। মানে চীনা 中-এর জন্য %E4%B8%AD — ঠিক যা RFC 3986 প্রয়োজন।
ফলাফলটি read-only আউটপুটের মান হিসেবে সেট করা হয়। navigator.clipboard.writeText-এর মাধ্যমে ক্লিপবোর্ডে রাখতে Copy ক্লিক করুন, অথবা Blob URL-এর মাধ্যমে .txt হিসেবে সংরক্ষণ করতে Download ক্লিক করুন — দুটোই আপনার ব্রাউজারের মধ্যেই থাকে।
বাস্তব পরিস্থিতি যেখানে সঠিক এনকোডিং মোড বাগ প্রতিরোধ করে।
?q=...-এ আপনি যে কোনো ইউজার ইনপুট রাখেন সেটি অবশ্যই Component মোড দিয়ে এনকোড করতে হবে। URI মোড = এবং & raw রেখে দিতো, এবং মানের মধ্যে এগুলো থাকলে আপনার URL ভেঙে যেতো।
কিছু চ্যাট অ্যাপ এবং PDF লিঙ্কের মধ্যে raw স্পেস বা non-ASCII অক্ষর থাকলে সেগুলো নষ্ট করে ফেলে। সব জায়গায় কপি-পেস্ট-সেফ করতে URL-টি URI মোডের মধ্য দিয়ে চালান।
যখন আপনার API একটি রিকোয়েস্ট প্রত্যাখ্যান করে, তখন সার্ভার আসলে কী দেখেছে তা দেখতে URL-টি Decode মোডে পেস্ট করুন। ডাবল-এনকোডেড মান (যেখানে % নিজেই %25 হিসেবে এনকোড করা হয়েছিল) সাথে সাথে চোখে পড়ে।
application/x-www-form-urlencoded-এ POST body ডিবাগ করার সময়, "+ as space" টগল চালু রেখে ডিকোড করুন। এটিই ব্রাউজারের প্রচলিত নিয়ম, এবং এটি ভুলে যাওয়াই "আমার username-এ প্লাস চিহ্ন কেন আসছে" বাগের ১ নম্বর কারণ।
আপনি যে URL এনকোড করেন সেগুলোতে প্রায়ই থাকে আসল কাস্টমার ইমেইল, ID, বা session token — ঠিক সেই ধরনের ডেটা যা আপনি অপরিচিত কারো সার্ভার টুলে পেস্ট করতে চাইবেন না। iKit URL এনকোডার আপনার ব্রাউজারে আগে থেকেই লোড হওয়া JavaScript হিসেবে চলে, তাই ইনপুট কখনোই আপনার ট্যাব ছাড়ে না।
fetch, XHR, বা beacon নেই।
iKit ব্লগ থেকে গভীর টিউটোরিয়াল এবং টুল তুলনা।
The 30-year-old form-encoding quirk explained — when + means space, when it means literal +, and how to fix the email-with-plus bug.
When to reach for Base64 versus URL percent-encoding, and what each encoding actually solves.
Pretty-print, validate, and structurally diff messy JSON in any browser.
Component (encodeURIComponent) unreserved নয় এমন প্রতিটি ক্যারেক্টারকে এস্কেপ করে — কোয়েরি-স্ট্রিং মান, path segment, বা যেকোনো একটি ফিল্ডের জন্য সবচেয়ে নিরাপদ। URI (encodeURI) URL স্ট্রাকচারের ক্যারেক্টারগুলো (:/?#=&) বজায় রাখে — পুরো একটি URL-এর জন্য এটি ব্যবহার করুন। Form (application/x-www-form-urlencoded) হলো Component + স্পেস '+' হয়ে যায় — যা HTML form ব্যবহার করে।
RFC 3986 এমন কিছু "unreserved" ক্যারেক্টার নির্ধারণ করে যেগুলো এনকোড করার দরকার নেই: A-Z a-z 0-9 - _. ~। বাকি সবকিছু percent-encode হয়। encodeURIComponent অতিরিক্তভাবে :/?#&= এনকোড করে যেগুলো encodeURI স্পর্শ করে না। কোয়েরি মান বনাম পুরো URL এনকোড করার সময় এই পার্থক্যটি গুরুত্বপূর্ণ।
তিনটি সাধারণ কারণ: (১) মূল টেক্সটটি Form-encoded ছিল, তাই '+' কে স্পেস হিসেবে ধরা উচিত — অপশনটি টগল করুন। (২) ডাবল-এনকোডেড — ইনপুটটি দুইবার এনকোড করা হয়েছিল; আবার ডিকোড করুন। (৩) অবৈধ percent সিকোয়েন্স — একটি বিচ্ছিন্ন % যার পর দুটি hex digit নেই। সঠিক বাইট পজিশনের জন্য error message দেখুন।
Component মোডের জন্য হ্যাঁ — আমরা সরাসরি encodeURIComponent কল করি। Form মোড RFC 3986 + WHATWG অনুযায়ী স্ট্যান্ডার্ড form-encoding টুইক যোগ করে (! ' * হয়ে যায় %21 %27 %28 %29 %2A)। URI মোড encodeURI কল করে, যেটিকে বেশিরভাগ ভাষায় 'percent-encode a URL' বলে বোঝানো হয়।
না। পুরো টুলটিই এই পেজের ভেতরের JavaScript — এনকোডিং ও ডিকোডিং আপনার ব্রাউজারেই হয়। আপনি DevTools → Network খুলে দেখে যাচাই করতে পারেন: এনকোড বা ডিকোডের সময় কোনো রিকোয়েস্ট পাঠানো হয় না।