URL এনকোড / ডিকোড
এনকোডিংURL উপাদান এবং সম্পূর্ণ URL-এর জন্য শতাংশ-এনকোডিং (RFC 3986)।
এই পৃষ্ঠায়
URL এনকোডিং কী?#
URL-এ শুধুমাত্র একটি ছোট সেটের এস্কেপবিহীন অক্ষর থাকতে পারে — ASCII অক্ষর, সংখ্যা, এবং -, _, ., ~-এর মতো কয়েকটি প্রতীক। বাকি সবকিছু (একটি স্পেস, একটি &, একটি চীনা অক্ষর, একটি ইমোজি, এমনকি একটি / যখন তা একটি পাথ বিভাজকের বদলে ডেটা হিসেবে বোঝানো হয়েছে) অবশ্যই একটি শতাংশ-এনকোডেড এস্কেপ হিসেবে লিখতে হবে: %-র পরে দুটি হেক্স সংখ্যা, যেমন একটি স্পেসের জন্য %20 বা 中-এর UTF-8 বাইটের জন্য %E4%B8%AD। URL এনকোডিং হলো সেই যান্ত্রিক অনুবাদ যা নির্বিচার টেক্সটকে একটি URL-এর ভেতরে চলাচলের জন্য নিরাপদ করে তোলে।
দুটি স্বতন্ত্র কাজ আছে যেগুলোকে সব সময় গুলিয়ে ফেলা হয়, এবং এই টুলটি বিকল্প নির্বাচনকারীর মাধ্যমে উভয়ই প্রকাশ করে:
- উপাদান মোড (JavaScript
encodeURIComponentপথ) এমন সবকিছুকে এস্কেপ করে যা একটি অক্ষর, সংখ্যা, বা- _ . ! ~ * ' (-এর একটি নয়। এটি ব্যবহার করুন যখন টেক্সটটি হলো একক টুকরো ডেটা যা আপনি একটি কোয়েরি প্যারামিটার, একটি পাথ সেগমেন্ট, বা একটি ফ্র্যাগমেন্টে ফেলতে চলেছেন — যাতে কাঠামোগত অর্থ সহ অক্ষরগুলো (/ ? & = #) নিরীহ আক্ষরিক টেক্সটে পরিণত হয়। - সম্পূর্ণ মোড (
encodeURIপথ) একই অনিরাপদ বাইটগুলোকে এস্কেপ করে কিন্তু ইচ্ছাকৃতভাবে URL-এর নিজস্ব কাঠামোগত অক্ষরগুলোকে অস্পর্শিত রাখে (: / ? # [ ] @ ! $ & ' ( ) * + , ; =)। এটি ব্যবহার করুন যখন আপনার কাছে একটি সম্পূর্ণ URL আছে যার ইতিমধ্যেই সঠিক আকৃতি আছে এবং আপনি শুধু এর ভেতরের আক্ষরিক অক্ষরগুলো পরিষ্কার করতে চান।
ডিকোড যেকোনো ফর্মকে উল্টোদিকে ফেরায়। যখন ইনপুটে %GG (বৈধ হেক্স নয়) বা একটি একক %-এর মতো একটি ত্রুটিপূর্ণ এস্কেপ থাকে, টুলটি ত্রুটি প্রকাশ করে এবং অনুমান করার বদলে ত্রুটিস্থান নির্দেশ করে।
ব্যবহারবিধি#
- উপরের বাম দিকের টগল থেকে এনকোড বা ডিকোড বেছে নিন।
- বিকল্প-এ, একটি URL-এ বসানো একক মানের জন্য উপাদান, বা এমন একটি সম্পূর্ণ URL-এর জন্য সম্পূর্ণ বেছে নিন যা তার কাঠামো রাখবে।
- বাঁদিকের ইনপুট পেইনে পেস্ট করুন।
- ডানদিকের আউটপুট পেইন থেকে ফলাফল পড়ুন এবং কপি ক্লিক করুন।
- নমুনা একটি প্রদর্শন স্ট্রিং লোড করে; মুছুন পেইনগুলো রিসেট করে।
মূল বৈশিষ্ট্য#
- দুটি প্রকৃত স্কোপ, একটি নয়। উপাদান বনাম সম্পূর্ণ
encodeURIComponent/encodeURIপার্থক্যকে হুবহু প্রতিফলিত করে, তাই আপনি টুল স্যুইচ না করেই একটি একক মান এস্কেপ করতে পারেন বা একটি সম্পূর্ণ URL পরিষ্কার করতে পারেন। - ডিফল্টভাবে UTF-8। নন-ASCII অক্ষরগুলো তাদের UTF-8 বাইট অনুক্রম হিসেবে এনকোড করা হয় (RFC 3986 থেকে মানক), তাই
中文হয়ে যায়%E4%B8%AD%E6%96%87, একটি একক-এস্কেপ Latin-1 দলা নয়। - ত্রুটি অবস্থান নির্দেশ করে। যখন ডিকোডিং একটি অবৈধ
%-এস্কেপে আঘাত করে, স্ট্যাটাস লাইন রিপোর্ট করে এটি কোথায়, পুরো ইনপুট না ফেলে। - স্থানীয়ভাবে চলে। সবকিছু আপনার ব্রাউজারে ঘটে; আপনি যা পেস্ট করেন তা আপলোড হয় না।
ব্যবহারিক উদাহরণ#
ফ্র্যাগমেন্ট a/b?c=d & e কে উপাদান মোডে এনকোড করলে তৈরি করে:
a%2Fb%3Fc%3Dd%20%26%20e
খেয়াল করুন যে / হয় %2F, ? হয় %3F, = হয় %3D, স্পেস হয় %20, এবং & হয় %26 — প্রতিটি অক্ষর যা অন্যথায় URL কাঠামো হিসেবে পড়া যেত তা নিরপেক্ষ করা হয়েছে। এটি পুরো স্ট্রিংকে একটি কোয়েরি মানে পুরো ভর্তি করার জন্য সঠিক ফর্ম।
এখন সম্পূর্ণ মোডে স্যুইচ করুন এবং একটি সম্পূর্ণ URL এনকোড করুন:
https://example.com/path?q=hello world&lang=zh CN
ফলাফল প্রোটোকল, স্ল্যাশ, ?, এবং & অক্ষত রাখে এবং শুধু আক্ষরিক স্পেসগুলো এস্কেপ করে:
https://example.com/path?q=hello%20world&lang=zh%20CN
এক নজরে দুটি মোডের মধ্যে পার্থক্য এটিই: উপাদান সবকিছুকে ডেটায় সমতল করে, সম্পূর্ণ URL কঙ্কাল সংরক্ষণ করে এবং শুধু সেই বাইটগুলো পরিষ্কার করে যেগুলো প্রয়োজন ছিল।
প্রশ্নোত্তর#
উপাদান নাকি সম্পূর্ণ — আমি কীভাবে সিদ্ধান্ত নেব?#
আপনি যদি একটি কোয়েরি স্ট্রিং তৈরি করেন এবং মানগুলোর একটি ব্যবহারকারীর ইনপুট থেকে এসেছে, তবে সেই মানটি উপাদান দিয়ে এনকোড করুন। আপনার যদি ইতিমধ্যে একটি সম্পূর্ণ-গঠিত URL আছে যাতে কেবল কয়েকটি বিচ্যুত অক্ষর (স্পেস, অ্যাকসেন্ট) আছে, পুরোটা সম্পূর্ণ দিয়ে পাস করুন। একটি উপযোগী পরীক্ষা: আউটপুটের এখনও তার ?, &, এবং / একটি লিঙ্ক হিসেবে কাজ করার দরকার আছে কি? তাহলে সম্পূর্ণ ব্যবহার করুন। সেই অক্ষরগুলো কি আসলে ডেটার অংশ? তাহলে উপাদান ব্যবহার করুন।
আমার ডিকোড করা স্ট্রিংয়ে %GG আছে এবং টুলটি ত্রুটি দেখায়। কেন?#
%-র সর্বদা দুটি হেক্সাডেসিমাল সংখ্যা অনুসরণ করতে হবে। %GG বৈধ হেক্স নয়, তাই ডিকোডার তা প্রত্যাখ্যান করে এবং অবস্থান রিপোর্ট করে — একই ইনপুট যা কোডে একটি URIError নিক্ষেপ করবে। হয় উৎস ঠিক করুন যাতে তা %25 পাঠায় (একটি আক্ষরিক %-এর এনকোডেড ফর্ম) অথবা ত্রুটিপূর্ণ এস্কেপটি সংশোধন করুন।
আমার কোয়েরি স্ট্রিং তৈরির আগে নাকি পরে এনকোড করব?#
প্রতিটি মানকে = এবং & দিয়ে যোগ করার আগে এনকোড করুন। আপনি যদি প্রথমে ?q=a & b তৈরি করেন এবং তারপর পুরোটা উপাদান মোড দিয়ে এনকোড করেন, তবে = এবং & ও এস্কেপ হয়ে যায় এবং সার্ভার আর সেগুলোকে বিভাজক হিসেবে দেখে না। টুকরোগুলো এনকোড করুন, তারপর একত্রিত করুন।
এটি কি Unicode-কে ব্রাউজারের মতো একইভাবে সামলায়?#
হ্যাঁ। আধুনিক ব্রাউজার এবং সার্ভার প্রত্যাশা করে শতাংশ-এস্কেপ UTF-8 বাইট বহন করবে, এবং এটিই এই টুলটি নির্গত করে — 中 হয় %E4%B8%AD। আপনি যদি এমন একটি পুরোনো সিস্টেম ডিবাগ করেন যা একটি লিগেসি একক-বাইট এনকোডিং (Latin-1, GBK, ইত্যাদি) প্রত্যাশা করে, বাইটগুলো ভিন্ন হবে এবং আপনার একটি এনকোডিং-নির্দিষ্ট টুল প্রয়োজন হবে।