UltKit
ছবি11
PDF13
ডকুমেন্ট ও ডেটা7
ভিডিও6
অডিও4
আরও টুল22

URL এনকোড ও ডিকোড

টেক্সটকে URL-এ ব্যবহারের উপযোগী করুন, অথবা %20-ধরনের সিকোয়েন্সকে আবার পড়ার মতো অক্ষরে ফিরিয়ে আনুন। টুলটি আপনার ব্রাউজারের নিজস্ব encodeURIComponent, encodeURI ও decodeURIComponent ব্যবহার করে, কোয়েরি প্যারামিটারগুলো একটি টেবিলে দেখায় এবং কোনো সার্ভারে কিছুই পাঠায় না।

মোড

০টি অক্ষর · ০টি শব্দ · ০টি লাইন

০টি অক্ষর · ০টি শব্দ · ০টি লাইন

সম্পূর্ণভাবে এই ব্রাউজার ট্যাবেই চলে। আপনার টেক্সট কখনও আপলোড বা সংরক্ষণ করা হয় না।

প্রতিটি ফাংশন কী এস্কেপ করে

ব্রাউজারের নিজস্ব ফাংশন দিয়ে গণনা করা। encodeURIComponent অক্ষর, অঙ্ক এবং এই চিহ্নগুলো অপরিবর্তিত রাখে: ! ' ( ) * - . _ ~

অক্ষরencodeURIComponentencodeURI
(স্পেস)%20%20
!!!
"%22%22
#%23#
$%24$
%%25%25
&%26&
'''
(((
)))
***
+%2B+
,%2C,
/%2F/
:%3A:
;%3B;
=%3D=
?%3F?
@%40@
[%5B%5B
]%5D%5D
{%7B%7B
}%7D%7D
|%7C%7C
\%5C%5C
^%5E%5E
`%60%60
<%3C%3C
>%3E%3E
~~~
---
___
...
é%C3%A9%C3%A9
€%E2%82%AC%E2%82%AC
😀%F0%9F%98%80%F0%9F%98%80

পার্সেন্ট-এনকোডিং ও RFC 3986-এর সংরক্ষিত অক্ষর

একটি URL-এ ASCII অক্ষরের একটি সীমিত সেটই থাকতে পারে। URI সিনট্যাক্সের ২০০৫ সালের স্পেসিফিকেশন RFC 3986 এগুলোকে দুই দলে ভাগ করেছে। আনরিজার্ভড অক্ষর, অর্থাৎ A–Z, a–z, 0–9 এবং চারটি চিহ্ন - . _ ~, কখনোই এনকোড করতে হয় না। রিজার্ভড অক্ষরগুলোর নির্দিষ্ট কাজ আছে: সাধারণ ডিলিমিটার : / ? # [ ] @ স্কিম, হোস্ট, পাথ, কোয়েরি ও ফ্র্যাগমেন্ট আলাদা করে, আর সাব-ডিলিমিটার ! $ & ' ( ) * + , ; = এগুলোর ভেতরের অংশ আলাদা করে, যেমন কোয়েরি স্ট্রিংয়ে & ও = করে। বাকি সব অক্ষর, এবং সাধারণ ডেটা হিসেবে ব্যবহৃত যেকোনো রিজার্ভড অক্ষর, পারসেন্ট-এনকোড করতে হয়।

পারসেন্ট-এনকোডিং একটি বাইটকে % এবং তার পরে দুটি হেক্সাডেসিমাল অঙ্ক দিয়ে লেখে। টেক্সট আগে UTF-8-এ রূপান্তরিত হয়, তাই স্পেস হয় %20, é (দুই বাইট) হয় %C3%A9 এবং একটি ইমোজি হয় চারটি %XX গ্রুপ। এ কারণেই "café & bar" খোঁজা লিংকে caf%C3%A9%20%26%20bar হয়ে যায়: & এনকোড করা হয়, যাতে সার্ভার সেটিকে নতুন প্যারামিটারের শুরু বলে ধরে না নেয়।

encodeURIComponent, encodeURI ও ডিকোডিং

encodeURIComponent একটি একক অংশের জন্য সঠিক পছন্দ, যেমন কোয়েরির মান, পাথের একটি অংশ বা প্যারামিটার হিসেবে পাঠানো রিডাইরেক্ট URL। এটি আনরিজার্ভড অক্ষর এবং ! ' ( ) * ছাড়া সবকিছু এস্কেপ করে; ঐতিহাসিক কারণে JavaScript এগুলো অক্ষত রাখে। encodeURI (সম্পূর্ণ URL) ধরে নেয় ইনপুট ইতিমধ্যে পূর্ণ ঠিকানা এবং রিজার্ভড অক্ষরগুলো যেমন আছে তেমন রাখে, তাই https://example.com/a b?q=1-এ শুধু স্পেসটি এনকোড হয়। প্যারামিটারের মানে encodeURI ব্যবহার করা একটি পুরোনো ভুল: মানের ভেতরের & বা # থেকে যাবে এবং URL ভেঙে দেবে।

ডিকোড দুটির যেকোনোটির কাজ উল্টে দেয়। GET দিয়ে জমা দেওয়া HTML ফর্ম পুরোনো application/x-www-form-urlencoded ফরম্যাট ব্যবহার করে, যেখানে স্পেস %20 নয়, + দিয়ে লেখা হয়; সেসবের জন্য Treat + as a space টিক দেওয়া রাখুন, আর ফোন নম্বরের মতো যেখানে আসল প্লাস চিহ্ন গুরুত্বপূর্ণ, সেখানে টিক তুলে দিন। ইনপুটে যদি এমন % থাকে যার পরে দুটি হেক্স অঙ্ক নেই, অথবা এমন বাইট থাকে যা বৈধ UTF-8 নয়, তবে অনুমান না করে ডিকোডিং স্পষ্ট বার্তা দিয়ে ব্যর্থ হয়। টেক্সটে কোয়েরি স্ট্রিং থাকলে তার প্যারামিটারগুলো টুলের নিচের টেবিলে ডিকোড অবস্থায় দেখা যায়। URL-এ বাইনারি ডেটার জন্য সাধারণ বিকল্প Base64url।

সচরাচর জিজ্ঞাসা

URL-এ স্পেস কি %20 হবে, নাকি প্লাস চিহ্ন?
পাথে এবং RFC 3986 অনুযায়ী স্পেস হলো %20। + রূপটি কেবল HTML ফর্মের পদ্ধতিতে এনকোড করা কোয়েরি স্ট্রিংয়ের ভেতরে স্পেস বোঝায়, তাই সব জায়গায় %20-ই নিরাপদ পছন্দ।
আমার URL-এ %2520 এল কেন?
এটি দুইবার এনকোড হয়েছে। প্রথমবার স্পেস হয়েছে %20, দ্বিতীয়বার % চিহ্নটিই %25 হিসেবে এনকোড হয়েছে। বাড়তি স্তর সরাতে একবার ডিকোড করুন, আর আপনার কোডে কেবল একটি জায়গায় মান এনকোড করুন।
কোন অক্ষরগুলো কখনো পার্সেন্ট-এনকোড করতে হয় না?
RFC 3986-এর আনরিজার্ভড সেট: ছোট ও বড় হাতের A থেকে Z অক্ষর, 0 থেকে 9 অঙ্ক এবং হাইফেন, পিরিয়ড, আন্ডারস্কোর ও টিলডা।
এনকোড না করে কি URL-এ ইংরেজি ছাড়া অন্য ভাষার অক্ষর রাখা যায়?
ব্রাউজার সেগুলো দেখায়, কিন্তু নেটওয়ার্কে পাথ বা কোয়েরির প্রতিটি non-ASCII অক্ষর পারসেন্ট-এনকোড করা UTF-8 হিসেবে পাঠানো হয়। ডোমেইন নামে আলাদা ব্যবস্থা Punycode ব্যবহার হয়, যা সেগুলোকে xn-- লেবেলে রূপান্তর করে।
ডিকোড করার সময় ভুল সিকোয়েন্সের (malformed) ত্রুটি দেখায় কেন?
টেক্সটে এমন % আছে যার পরে দুটি হেক্সাডেসিমাল অঙ্ক নেই, যেমন আক্ষরিক "100%", অথবা বাইটগুলো অবৈধ UTF-8-এ ডিকোড হচ্ছে। ডিকোডের আগে এলোমেলো % চিহ্নগুলো %25 হিসেবে এনকোড করুন।