URL এনকোডিং

কিছু অক্ষর URL-এর অংশ হতে পারে না (যেমন, স্পেস) এবং অন্য কিছু অক্ষরের URL-এ বিশেষ অর্থ থাকে। HTML ফর্মে, একটি নামকে তার মান থেকে আলাদা করতে = অক্ষরটি ব্যবহৃত হয়। URI জেনেরিক সিনট্যাক্স এই সমস্যাটি মোকাবেলা করার জন্য URL এনকোডিং ব্যবহার করে, যেখানে HTML ফর্ম এই ধরনের সমস্ত অক্ষরের জন্য পার্সেন্ট এনকোডিং প্রয়োগ না করে কিছু অতিরিক্ত প্রতিস্থাপন করে থাকে।

উদাহরণস্বরূপ, একটি স্ট্রিং-এর মধ্যে থাকা স্পেসকে হয় %20 দিয়ে এনকোড করা হয় অথবা প্লাস চিহ্ন ( + ) দিয়ে প্রতিস্থাপন করা হয়। যদি আপনি বিভাজক হিসেবে পাইপ ক্যারেক্টার ( | ) ব্যবহার করেন, তবে পাইপটিকে অবশ্যই %7C হিসেবে এনকোড করতে হবে। একটি স্ট্রিং-এর মধ্যে থাকা কমাকে %2C হিসেবে এনকোড করা উচিত।

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

একটি বৈধ URL তৈরি করা

আপনার মনে হতে পারে যে একটি "বৈধ" ইউআরএল স্বতঃসিদ্ধ, কিন্তু ব্যাপারটা ঠিক তেমন নয়। উদাহরণস্বরূপ, ব্রাউজারের অ্যাড্রেস বারে প্রবেশ করানো একটি ইউআরএল-এ বিশেষ অক্ষর থাকতে পারে (যেমন "上海+中國" ); প্রেরণের আগে ব্রাউজারকে অভ্যন্তরীণভাবে সেই অক্ষরগুলোকে একটি ভিন্ন এনকোডিং-এ অনুবাদ করতে হয়। একইভাবে, যে কোনো কোড যা UTF-8 ইনপুট তৈরি বা গ্রহণ করে, সেটি UTF-8 অক্ষরযুক্ত ইউআরএলগুলোকে "বৈধ" হিসেবে গণ্য করতে পারে, কিন্তু ওয়েব সার্ভারে পাঠানোর আগে সেই অক্ষরগুলোকেও অনুবাদ করার প্রয়োজন হয়। এই প্রক্রিয়াটিকে ইউআরএল-এনকোডিং বা পার্সেন্ট-এনকোডিং বলা হয়।

বিশেষ চরিত্র

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

বৈধ URL অক্ষরগুলির সারাংশ
সেট চরিত্রগুলি URL ব্যবহার
আলফানিউমেরিক abcdefghijklm nopqrstuvwxyz ABCDEFGHIJKLM NOPQRSTUVWXYZ 0 1 2 3 4 5 6 7 8 9 টেক্সট স্ট্রিং, স্কিম ব্যবহার ( http ), পোর্ট ( 8080 ), ইত্যাদি।
অসংরক্ষিত - _ . ~ টেক্সট স্ট্রিং
সংরক্ষিত ! * ' ( ) ; : @ & = + $ , / ? % # [ ] নিয়ন্ত্রণ অক্ষর এবং/অথবা পাঠ্য স্ট্রিং

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

  • আপনি যে অক্ষরগুলো পরিচালনা করতে চান, সেগুলো উপরের সেটের বাইরে থাকে। উদাহরণস্বরূপ,上海+中國-এর মতো বিদেশী ভাষার অক্ষরগুলোকে উপরের অক্ষরগুলো ব্যবহার করে এনকোড করতে হয়। প্রচলিত রীতি অনুযায়ী, স্পেস (যা URL-এর মধ্যে অনুমোদিত নয়) প্রায়শই প্লাস '+' চিহ্ন ব্যবহার করে প্রকাশ করা হয়।
  • উপরোক্ত সেটের মধ্যে কিছু অক্ষর সংরক্ষিত অক্ষর হিসেবে বিদ্যমান, কিন্তু সেগুলোকে আক্ষরিকভাবে ব্যবহার করতে হয়। উদাহরণস্বরূপ, URL-এ কোয়েরি স্ট্রিং-এর শুরু বোঝাতে '? ? চিহ্নটি ব্যবহৃত হয়; যদি আপনি "? and the Mysterions" স্ট্রিংটি ব্যবহার করতে চান, তাহলে আপনাকে '?' অক্ষরটি এনকোড করতে হবে।

URL-এনকোড করার জন্য সমস্ত অক্ষরকে একটি '%' অক্ষর এবং তাদের UTF-8 অক্ষরের সাথে সঙ্গতিপূর্ণ একটি দুই-অক্ষরের হেক্স ভ্যালু ব্যবহার করে এনকোড করা হয়। উদাহরণস্বরূপ, UTF-8-এ上海+中國URL-এনকোড করলে হবে %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B? and the Mysterians স্ট্রিংটিকে URL-এনকোড করলে হবে %3F+and+the+Mysterians অথবা %3F%20and%20the%20Mysterians

সাধারণ অক্ষর যেগুলোর এনকোডিং প্রয়োজন

কিছু সাধারণ অক্ষর যা অবশ্যই এনকোড করতে হবে, সেগুলো হলো:

অনিরাপদ চরিত্র এনকোড করা মান
মহাকাশ %20
" %22
< %3C
> %3E
# %23
% %25
| %7C

ব্যবহারকারীর ইনপুট থেকে পাওয়া একটি URL রূপান্তর করা কখনও কখনও বেশ জটিল হতে পারে। উদাহরণস্বরূপ, একজন ব্যবহারকারী "5th&Main St." এর মতো একটি ঠিকানা লিখতে পারেন। সাধারণত, ব্যবহারকারীর দেওয়া যেকোনো ইনপুটকে আক্ষরিক অক্ষর হিসেবে বিবেচনা করে, আপনার URL-টি তার অংশগুলো থেকে তৈরি করা উচিত।

এছাড়াও, গুগল ম্যাপস প্ল্যাটফর্মের সমস্ত ওয়েব সার্ভিস এবং স্ট্যাটিক ওয়েব এপিআই-এর জন্য ইউআরএল ১৬৩৮৪ অক্ষরের মধ্যে সীমাবদ্ধ। বেশিরভাগ সার্ভিসের ক্ষেত্রে, এই অক্ষর সীমা খুব কমই অতিক্রম করা হয়। তবে, মনে রাখবেন যে কিছু নির্দিষ্ট সার্ভিসের বেশ কিছু প্যারামিটার রয়েছে, যার ফলে ইউআরএল দীর্ঘ হতে পারে।