URL এনকোডার ও ডিকোডার
URL, কোয়েরি প্যারামিটার এবং পাথ সেগমেন্টে নিরাপদ ব্যবহারের জন্য স্ট্রিং পার্সেন্ট-এনকোড বা ডিকোড করুন।
- উপরের বাক্সে আপনি যে স্ট্রিং এনকোড (বা ডিকোড) করতে চান সেটি পেস্ট করুন।
- একটি একক কোয়েরি মান বা পাথ সেগমেন্টের জন্য কম্পোনেন্ট বেছে নিন, বা একটি পুরো URL-এর জন্য সম্পূর্ণ URL যার কিছু অনিরাপদ অক্ষর আছে।
- এনকোড বা ডিকোড ক্লিক করুন। আউটপুট ইনপুটকে স্থানে প্রতিস্থাপন করে।
- ফলাফল কপি করুন, বা আবার শুরু করতে মুছুন ক্লিক করুন।
এটি কী করে?
URL / পার্সেন্ট-এনকোডিং URL-এ অনিরাপদ বা অস্পষ্ট অক্ষরগুলিকে % এর পরে হেক্সে তাদের UTF-8 বাইট মান দিয়ে প্রতিস্থাপন করে। কম্পোনেন্ট মোড encodeURIComponent() ব্যবহার করে এবং প্রতিটি সংরক্ষিত অক্ষর এনকোড করে — কোয়েরি স্ট্রিং বা পাথে আপনি যে মান এমবেড করেন তার জন্য সঠিক। সম্পূর্ণ URL মোড encodeURI() ব্যবহার করে, যা :/?#&= এর মতো URL-কাঠামোগত অক্ষর সংরক্ষণ করে।
উদাহরণ
ইনপুট:
hello world & café / 日本語 কম্পোনেন্ট হিসেবে এনকোড করা:
hello%20world%20%26%20caf%C3%A9%20%2F%20%E6%97%A5%E6%9C%AC%E8%AA%9E সম্পূর্ণ URL হিসেবে এনকোড করা:
hello%20world%20&%20caf%C3%A9%20/%20%E6%97%A5%E6%9C%AC%E8%AA%9E লক্ষ্য করুন সম্পূর্ণ URL & এবং / কে একা রেখেছে কারণ URL-এ তাদের কাঠামোগত অর্থ আছে।
সাধারণ ত্রুটি ও সমস্যা
বেশিরভাগ এনকোডিং সমস্যা ভুল মোড বেছে নেওয়া বা একই ইনপুটে টুল দু'বার চালানো থেকে আসে। নীচের আইটেমগুলি আমরা প্রায়শই যে কেসগুলি দেখি তা কভার করে।
- কোয়েরি মানের জন্য encodeURI ব্যবহার। encodeURI("a&b=c") a&b=c দেয় (অপরিবর্তিত), যা কোয়েরি স্ট্রিং ভাঙে। মানগুলির জন্য কম্পোনেন্ট মোড (encodeURIComponent) ব্যবহার করুন।
- ডাবল-এনকোডিং। hello%20world দ্বিতীয়বার এনকোড করলে hello%2520world উৎপন্ন হয়। প্রথমে ডিকোড করুন বা একটি লেয়ার এড়িয়ে যান।
- # ভুলে যাওয়া। কোয়েরি মানের ভিতরে একটি # %23 হিসেবে এনকোড না করা হলে ফ্র্যাগমেন্ট শুরু হিসেবে বিবেচিত হয়।
- প্লাস চিহ্ন বিভ্রান্তি। + form-encoded bodies-এ স্পেস বোঝায় কিন্তু URL পাথ বা কোয়েরিতে একটি আক্ষরিক + । একটি কোয়েরি মানে একটি প্রকৃত প্লাস চিহ্ন পাঠাতে, এটিকে %2B হিসেবে এনকোড করুন।
- ত্রুটিপূর্ণ পার্সেন্ট সিকোয়েন্স। একটি আক্ষরিক % যা কখনো এনকোড করা হয়নি তা decodeURIComponent-কে URI malformed থ্রো করায়। হয় % কে %25 হিসেবে এনকোড করুন বা ডিকোড করার আগে একক পার্সেন্ট সরান।
- UTF-8 বনাম Latin-1 লিগ্যাসি সার্ভার। এই টুল সর্বদা UTF-8 ব্যবহার করে। কিছু খুব পুরানো সিস্টেম Latin-1 / windows-1252 আশা করে — সেখানে é %E9, %C3%A9 নয়। যদি আপনি mojibake দেখেন, অন্য প্রান্ত UTF-8 নয়।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
encodeURI এবং encodeURIComponent-এর মধ্যে পার্থক্য কী?
encodeURIComponent এমন সবকিছু এস্কেপ করে যা অক্ষর, অঙ্ক বা -_.!~*'()-এর একটি নয়, তাই এটি পৃথক কোয়েরি মান এবং পাথ সেগমেন্টের জন্য নিরাপদ। encodeURI :/?#&= এর মতো URL-সংরক্ষিত অক্ষরগুলিকে একা ছেড়ে দেয়, তাই এটি একটি সম্পূর্ণ URL এনকোড করার জন্য যার ইতিমধ্যে কাঠামো আছে। ৯৫% সময় কম্পোনেন্ট ব্যবহার করুন; শুধুমাত্র সম্পূর্ণ URL ব্যবহার করুন যখন আপনার বেশিরভাগ বৈধ URL-এ এলোমেলো স্পেস বা Unicode থাকে।
একটি কোয়েরি স্ট্রিংয়ে প্রকৃতপক্ষে কোন অক্ষরগুলির এনকোডিং প্রয়োজন?
কোয়েরি স্ট্রিং সীমানা & এবং = অবশ্যই একটি মানের ভিতরে এনকোড করতে হবে (অন্যথায় তারা সেপারেটরের মতো দেখায়)। স্পেস %20 বা + হয়। # ফ্র্যাগমেন্ট মার্কার অবশ্যই এনকোড করতে হবে। প্লাস: /, ?, যেকোনো অ-ASCII, এবং কন্ট্রোল অক্ষর। encodeURIComponent এগুলির সব পরিচালনা করে; encodeURI &, =, /, ?, # কে অনকোডেড ছেড়ে দেয় কারণ সেগুলি URL-কাঠামোগত।
আমার URL কেন ডাবল-এনকোড হয়ে যাচ্ছে?
ডাবল-এনকোডিং ঘটে যখন আপনি ইতিমধ্যে এনকোড করা একটি মান এনকোড করেন। একটি স্পেস %20 হয়, তারপর % নিজেই %25 হয়, %2520 দেয়। সাধারণত encodeURIComponent-এর মাধ্যমে একটি ইতিমধ্যে এনকোড করা URL আবার পাঠানোর ফলে, বা একটি ফ্রেমওয়ার্ক যা আপনার ম্যানুয়াল এনকোডিংয়ের উপরে অটো-এনকোড করে তার ফলে। একবার ডিকোড করুন এবং পরিষ্কারভাবে পুনরায় এনকোড করুন, বা একটি লেয়ার এড়িয়ে যান।
এটি ইমোজি বা উচ্চারণযুক্ত অক্ষরের মতো অ-ASCII অক্ষরগুলি কীভাবে পরিচালনা করে?
JavaScript-এর এনকোডার প্রথমে অ-ASCII অক্ষরগুলিকে UTF-8 বাইটে রূপান্তর করে, তারপর প্রতিটি বাইট পার্সেন্ট-এনকোড করে। তাই é %C3%A9 হয় (দুই বাইট) এবং 😀 এর মতো একটি ইমোজি %F0%9F%98%80 হয় (চার বাইট)। ডিকোডিং প্রক্রিয়াটি বিপরীত করে। এটি স্ট্যান্ডার্ড RFC 3986 আচরণ এবং প্রতিটি আধুনিক সার্ভারের সাথে কাজ করে।
ডিকোডিং কেন "URI malformed" দিয়ে ব্যর্থ হয়?
decodeURIComponent থ্রো করে যখন এটি একটি অবৈধ পার্সেন্ট সিকোয়েন্স দেখে — একটি একক % যার পরে দুটি হেক্স অঙ্ক নেই (যেমন %ZZ বা শুধু %), বা UTF-8 বাইট সিকোয়েন্স যা বৈধ নয় (যেমন বৈধ ধারাবাহিকতা বাইট ছাড়া %C3)। সাধারণ কারণ: ইনপুটে একটি আক্ষরিক % যা কখনো এনকোড করা হয়নি, বা একটি স্ট্রিং যা ইতিমধ্যে একবার ডিকোড করা হয়েছে এবং তাতে এখনও পার্সেন্ট চিহ্ন আছে।
স্পেস কি + বা %20 হওয়া উচিত?
উভয়ই বাস্তবে দেখা যায়। %20 সর্বত্র সঠিক — পাথ, কোয়েরি স্ট্রিং এবং ফ্র্যাগমেন্টে। + শর্টকাট শুধুমাত্র HTML ফর্ম জমা দেওয়ার জন্য ব্যবহৃত application/x-www-form-urlencoded ফর্ম্যাটের ভিতরে "স্পেস" বোঝায়। এই টুল %20 ব্যবহার করে কারণ encodeURIComponent করে। যদি আপনার বিশেষভাবে + দরকার হয়, এনকোডিংয়ের পরে %20 কে + দিয়ে প্রতিস্থাপন করুন।