← সব টুল

URL এনকোড ও ডিকোড অনলাইন

সরাসরি ব্রাউজারে URL ও টেক্সট পার্সেন্ট-এনকোড ও ডিকোড করুন। রিজার্ভড ক্যারেক্টার, encodeURI ও encodeURIComponent বুঝুন, সবকিছু স্থানীয়ভাবে প্রসেস হয়।

ডেভেলপারদের জন্য URL এনকোডিং ও ডিকোডিং ব্যাখ্যা

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

একটি উজ্জ্বল URL পাথ গাঢ় ইন্ডিগো পটভূমিতে পার্সেন্ট-এনকোডেড হেক্সাডেসিমেল অক্ষরে দ্রবীভূত হচ্ছে
একটি URL পাথ নিরাপদ পার্সেন্ট-এনকোডেড ট্রিপলেটে রূপান্তরিত হচ্ছে।

পার্সেন্ট-এনকোডিং আসলে কী

নিয়মটি যান্ত্রিক ও অনুসরণ করা সহজ। যে কোনো অক্ষর যা আক্ষরিকভাবে উপস্থিত হতে পারে না তা একটি % চিহ্ন দিয়ে প্রতিস্থাপিত হয় যার পরে দুটি হেক্সাডেসিমেল অঙ্ক থাকে যা সেই অক্ষরের বাইট মান বানান করে। একটি স্পেস %20 হয়ে যায়। একটি প্লাস চিহ্ন %2B হয়ে যায়। হ্যাশ চিহ্ন %23 হয়ে যায়। যখন একটি অক্ষর একাধিক বাইটে ম্যাপ করে, যেমন UTF-8-এর অধীনে বেশিরভাগ নন-ASCII টেক্সট করে, আপনি কেবল একের পর এক বেশ কয়েকটি ট্রিপলেট পান: ইউরো চিহ্ন %E2%82%AC-এ পরিণত হয়। ডিকোডিং প্রক্রিয়াটিকে বিপরীত করে, প্রতিটি ট্রিপলেট পড়ে তার মূল বাইটে ফিরিয়ে নেয়।

এই কনভেনশনটি URI স্পেসিফিকেশনে (RFC 3986) সংজ্ঞায়িত করা হয়েছে এবং এটি ইচ্ছাকৃতভাবে সাধারণ। সাধারণ হওয়াটাই মূল বিষয়। পৃথিবীর প্রতিটি ভালো-আচরণকারী HTTP ক্লায়েন্ট ও সার্ভার একই নিয়ম বাস্তবায়ন করে, তাই একটি লিঙ্ক যা এক জায়গায় সঠিকভাবে এনকোড করা হয় তা অন্য সব জায়গায় অক্ষত অবস্থায় পৌঁছায়।

কেন এটির অস্তিত্ব থাকতে হবে

URL দুই ধরনের অক্ষর বহন করে যাদের কাজ খুবই আলাদা। সংরক্ষিত অক্ষর যেমন /, ?, #, &, = এবং : কাঠামোগত। তারা একটি পার্সারকে বলে দেয় পাথ কোথায় শেষ হয় ও কোয়েরি স্ট্রিং কোথায় শুরু হয়, বা একটি প্যারামিটার কোথায় থেমে পরেরটি শুরু হয়। যদি আপনার প্রকৃত ডেটাতে সেই চিহ্নগুলোর একটি থাকে, এটি অবশ্যই এনকোড করা উচিত যাতে পার্সার এটিকে যতিচিহ্ন হিসেবে ভুল না বোঝে। A&B/2024-এর মতো একটি অর্ডার রেফারেন্স কাঁচা অবস্থায় একটি কোয়েরি স্ট্রিং-এ ফেলে দিলে দুটি প্যারামিটার ও একটি পাথ সেগমেন্ট হিসেবে ভুলভাবে পড়া হবে।

তারপর আছে অনিরাপদ ও নন-ASCII অক্ষর: স্পেস, উদ্ধৃতি চিহ্ন, কৌণিক বন্ধনী, উচ্চারণযুক্ত অক্ষর, ইমোজি, সাধারণ ASCII পরিসরের বাইরের যেকোনো কিছু। এগুলোর একটি URL-এ আক্ষরিকভাবে উপস্থিত হওয়ার কোনো কাজ নেই, হয় কারণ তারা ট্রানজিটে বিকৃত হয়ে যায় বা কারণ তাদের কোনো নির্ধারিত উপস্থাপনা নেই। এগুলো এনকোড করা লিঙ্কগুলোকে পরিষ্কার ও পূর্বানুমানযোগ্য রাখে ফলাফলটিকে সুযোগের উপর ছেড়ে না দিয়ে।

এটি প্রকৃত কাজে কোথায় দেখা যায়

কোয়েরি স্ট্রিং হলো ক্লাসিক ক্ষেত্র। ?key=...-এ আপনার যোগ করা প্রতিটি মান এনকোড করা উচিত যাতে ব্যবহারকারীর ইনপুট কাঠামো ভাঙতে না পারে। একই কথা প্রযোজ্য application/x-www-form-urlencoded হিসেবে পাঠানো HTML ফর্ম সাবমিশনের জন্য, যেখানে ব্রাউজার ফিল্ড মান স্বয়ংক্রিয়ভাবে এনকোড করে (এবং, ঐতিহাসিক কনভেনশন অনুসারে, স্পেসকে %20-এর বদলে +-এ পরিণত করে)। আপনি এটির সাথে দেখাও পাবেন যখন নন-ল্যাটিন শিরোনাম সহ পাতার দিকে নির্দেশ করা লিঙ্ক তৈরি করেন, হাতে API অনুরোধ তৈরি করার সময়, প্যারামিটার হিসেবে রিডাইরেক্ট টার্গেট পাস করার সময়, এবং কেন একটি অনুরোধ যা ঠিকানা বারে ঠিক দেখায় তা সার্ভারে বিকৃত হয়ে পৌঁছায় তা ডিবাগ করার সময়।

URL এনকোডিং প্রতীকী একটি উজ্জ্বল সায়ান ও গোল্ড পাইপের মধ্য দিয়ে নিরাপদে প্রবাহিত ডেটার স্ট্রিম
এনকোডিং যেকোনো টেক্সটকে নেটওয়ার্কের মধ্য দিয়ে নিরাপদে যেতে দেয়।

encodeURI বনাম encodeURIComponent

JavaScript দুটি এনকোডার সরবরাহ করে, এবং ভুলটি বেছে নেওয়া একটি সাধারণ বাগ। পার্থক্যটি পরিধি সম্পর্কে। encodeURIComponent একটি একক ডেটা টুকরোর জন্য, যেমন একটি কোয়েরি মান। এটি প্রায় সবকিছু এনকোড করে, সংরক্ষিত অক্ষর /, ?, :, @, &, =, + এবং # সহ। এটিই ঠিক যা আপনি চান যখন ডেটাতে সেই চিহ্নগুলোকে সাধারণ টেক্সট হিসেবে থাকতে অনুমতি দেওয়া হয়।

encodeURI একটি সম্পূর্ণ ঠিকানার জন্য যা আপনি কাজ করতে রাখতে চান। এটি কাঠামোগত অক্ষরগুলো একা ছেড়ে দেয়, তাই স্ল্যাশ, কোলন ও প্রশ্নবোধক চিহ্ন যা URL-কে একসাথে ধরে রাখে তা টিকে থাকে। এটি ব্যবহার করুন যখন আপনার একটি সম্পূর্ণ URL আছে এবং শুধু স্পেস বা নন-ASCII অক্ষর পরিষ্কার করতে চান; encodeURIComponent ব্যবহার করুন যখনই আপনি একটি বড় URL-এ একটি মান প্রবেশ করাচ্ছেন। একটি সহজ নিয়ম: encodeURI দিয়ে পুরো লিঙ্ক এনকোড করুন, encodeURIComponent দিয়ে আপনি যে অংশগুলো ভরছেন তা এনকোড করুন।

সবকিছু আপনার মেশিনেই থাকে

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

প্রায়শই জিজ্ঞাসিত প্রশ্ন

একটি URL-এ %20 এর অর্থ কী?

এটি একটি এনকোড করা স্পেস। স্পেস অক্ষরটি একটি URL-এ আক্ষরিকভাবে অনুমোদিত নয়, তাই এটি একটি পার্সেন্ট চিহ্ন ও হেক্সাডেসিমেল মান 20 দিয়ে প্রতিস্থাপিত হয়, যা একটি স্পেসের বাইট মান।

কেন আমি মাঝে মাঝে %20-এর বদলে একটি প্লাস চিহ্ন দেখি?

application/x-www-form-urlencoded ধরনের HTML ফর্ম ডেটা ঐতিহাসিক কনভেনশন অনুযায়ী স্পেসকে একটি প্লাস চিহ্ন হিসেবে এনকোড করে। একটি সাধারণ পাথ বা কোয়েরিতে, একটি স্পেস %20 হিসেবে এনকোড হয়। উভয়ই তাদের যথাযথ প্রসঙ্গে ফিরে একটি স্পেসে ডিকোড হয়।

কখন আমার encodeURI-এর বদলে encodeURIComponent ব্যবহার করা উচিত?

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

URL এনকোডিং কি আমার ডেটার অর্থ পরিবর্তন করে?

না। এনকোডিং সম্পূর্ণভাবে বিপরীতযোগ্য। ফলাফল ডিকোড করলে ঠিক মূল টেক্সট ফিরে আসে, বাইট বাই বাইট, যতক্ষণ উভয় প্রান্তে একই ক্যারেক্টার সেট ব্যবহৃত হয়।

উচ্চারণ বা ইমোজির মতো নন-ASCII অক্ষর কীভাবে পরিচালিত হয়?

এগুলো প্রথমে UTF-8 বাইটে পরিণত হয়, তারপর প্রতিটি বাইট তার নিজস্ব পার্সেন্ট ট্রিপলেটে পরিণত হয়। তাই একটি একক উচ্চারিত অক্ষর বা ইমোজি এনকোড করা আউটপুটে বেশ কয়েকটি ট্রিপলেটে প্রসারিত হতে পারে।

এই টুল ব্যবহার করার সময় আমার টেক্সট কি একটি সার্ভারে পাঠানো হয়?

না। এনকোডিং ও ডিকোডিং সম্পূর্ণভাবে আপনার ব্রাউজারে ঘটে। আপনি যা পেস্ট করেন তার কিছুই আপলোড হয় না, তাই এটি ব্যক্তিগত বা সংবেদনশীল স্ট্রিং-এর সাথে ব্যবহার করা নিরাপদ।