UTF-8 কে Base64URL এ রূপান্তর করতে, 4টি ধাপ অনুসরণ করুন: (1) টেক্সটকে UTF-8 বাইটে এনকোড করুন, (2) স্ট্যান্ডার্ড Base64 প্রয়োগ করুন, (3) + → - এবং / → _ অদলবদল করুন, (4) শেষের = প্যাডিং সরিয়ে ফেলুন। এটি RFC 4648 অনুযায়ী একটি URL-নিরাপদ স্ট্রিং তৈরি করে, যা JWTs এবং API হেডারে ব্যবহৃত হয়।
স্ট্যান্ডার্ড Base64 বনাম Base64URL
| অক্ষর | স্ট্যান্ডার্ড Base64 | Base64URL | কারণ |
|---|---|---|---|
| 62তম অক্ষর | + |
- |
URLs এ + মানে স্পেস |
| 63তম অক্ষর | / |
_ |
URLs এ / একটি পাথ সেপারেটর |
| প্যাডিং | = প্রয়োজন |
বাদ দেওয়া | URLs এ = %3D হয়ে যায় |
| URL-নিরাপদ | না | হ্যাঁ | ক্যোয়ারি স্ট্রিং এবং ফাইলের নামে সরাসরি ব্যবহার |
RFC 4648 §5 অনুযায়ী, এই “URL এবং ফাইলনাম নিরাপদ বর্ণমালা” ক্রস-সিস্টেম সামঞ্জস্য নিশ্চিত করে।

4-ধাপ রূপান্তর প্রক্রিয়া
| ধাপ | অপারেশন | উদাহরণ (“Hello”) |
|---|---|---|
| 1 | UTF-8 টেক্সট → বাইট | H e l l o → বাইট অ্যারে |
| 2 | বাইট → স্ট্যান্ডার্ড Base64 | SGVsbG8= |
| 3 | + → -, / → _ অদলবদল |
এখানে কোনো পরিবর্তনের প্রয়োজন নেই |
| 4 | শেষের = প্যাডিং সরান |
SGVsbG8 |
Base64 এনকোডিং ডেটার আকার ~33% বৃদ্ধি করে, উইকিপিডিয়া অনুযায়ী।

Unicode এবং ইমোজি হ্যান্ডলিং
NextUtils অনুযায়ী, Base64 হলো এনকোডিং, এনক্রিপশন নয় — এটি শুধুমাত্র-টেক্সট চ্যানেলের মাধ্যমে ডেটা স্থানান্তর করে। Unicode/ইমোজি সমস্যাহীনভাবে (“Mojibake”) হ্যান্ডেল করতে, সর্বদা প্রথমে UTF-8 বাইটে রূপান্তর করতে TextEncoder ব্যবহার করুন।
| ইনপুট | TextEncoder ছাড়া | TextEncoder সহ |
|---|---|---|
Hello 世界! 🌍 |
Mojibake / TypeError | সঠিক Base64URL |
কোড উদাহরণ
JavaScript (ব্রাউজার) — Unicode-নিরাপদ
function toBase64Url(str) {
const bytes = new TextEncoder().encode(str);
const base64 = btoa(String.fromCharCode(...bytes));
return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}
Python 3 — স্ট্যান্ডার্ড লাইব্রেরি
AskPython অনুযায়ী:
import base64
data = "Hello 世界! 🌍"
encoded = base64.urlsafe_b64encode(data.encode('utf-8')).decode('utf-8').rstrip('=')
print(encoded)
Node.js — Buffer রূপান্তর
const str = "API_Payload_Data";
const base64url = Buffer.from(str, 'utf8')
.toString('base64')
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=/g, '');
সমস্যা সমাধান: প্যাডিং ত্রুটি
| ত্রুটি | কারণ | সমাধান |
|---|---|---|
binascii.Error: Incorrect padding |
= প্যাডিং অনুপস্থিত |
= যোগ করুন যতক্ষণ না দৈর্ঘ্য 4 এর গুণিতক হয় |
TypeError atob() এর সাথে |
অ-ASCII অক্ষর | প্রথমে TextEncoder ব্যবহার করুন |
| বিকৃত আউটপুট | UTF-8 এনকোডিং বাদ দেওয়া হয়েছে | Base64 এর আগে সর্বদা বাইটে এনকোড করুন |
AskPython অনুযায়ী, অনুপস্থিত প্যাডিং গণনা করুন: padding_needed = (4 - len(data) % 4) % 4, তারপর সেই সংখ্যক = অক্ষর যোগ করুন।
ব্যবহারের ক্ষেত্র: JWT এবং Data URIs
JWT (JSON Web Token) কাঠামো
| অংশ | বিষয়বস্তু | এনকোডিং |
|---|---|---|
| হেডার | অ্যালগরিদম + টোকেন প্রকার | Base64URL |
| পেলোড | দাবি (ব্যবহারকারীর ডেটা, মেয়াদ শেষ) | Base64URL |
| স্বাক্ষর | HMAC বা RSA স্বাক্ষর | Base64URL |
JWTs প্রায়ই eyJ দিয়ে শুরু হয় — এটি { (JSON শুরুর ব্র্যাকেট) এর Base64URL এনকোডিং।

ব্যবহারের ক্ষেত্র অনুযায়ী Base64 বনাম Base64URL
| ব্যবহারের ক্ষেত্র | এনকোডিং | প্যাডিং |
|---|---|---|
| JWT টোকেন | Base64URL | বাদ দেওয়া |
| Data URIs (এম্বেডেড ছবি) | স্ট্যান্ডার্ড Base64 | প্রয়োজন |
| HTTP Basic Auth | স্ট্যান্ডার্ড Base64 | প্রয়োজন |
| URL ক্যোয়ারি প্যারামিটার | Base64URL | বাদ দেওয়া |
উপসংহার
4টি ধাপ: UTF-8 বাইট → Base64 → +/ কে -_ এ পরিবর্তন → প্যাডিং সরান। JavaScript এ TextEncoder ব্যবহার করুন, Python এ base64.urlsafe_b64encode(), Node.js এ Buffer। ক্রস-সিস্টেম সামঞ্জস্যের জন্য RFC 4648 অনুসরণ করুন। Base64URL হলো এনকোডিং, এনক্রিপশন নয় — নিরাপত্তার জন্য AES-256 বা TLS ব্যবহার করুন।
সাধারণ জিজ্ঞাসা
Base64URL কি এনক্রিপশনের মতোই?
না। Base64URL একটি প্রত্যাবর্তনযোগ্য এনকোডিং — যে কেউ কী ছাড়াই এটি ডিকোড করতে পারে। সংবেদনশীল ডেটা সুরক্ষিত রাখতে AES-256 বা TLS/SSL ব্যবহার করুন।
Base64URL স্ট্যান্ডার্ড Base64 ডিকোডারে কেন ব্যর্থ হয়?
স্ট্যান্ডার্ড ডিকোডারগুলি +, / এবং = প্যাডিং আশা করে। Base64URL -, _ ব্যবহার করে এবং প্যাডিং বাদ দেয়। ডিকোড করার আগে অক্ষর অদলবদল বিপরীত করুন এবং প্যাডিং পুনরুদ্ধার করুন।
JWTs এ প্যাডিং কেন বাদ দেওয়া হয়?
= অক্ষর URLs এ %3D হয়ে যায়, যা স্ট্রিংগুলিকে দীর্ঘ এবং পড়তে কঠিন করে তোলে। RFC 4648 বাদ দেওয়ার অনুমতি দেয় কারণ ডিকোডারগুলি প্যাডিং মার্কার ছাড়াই মূল দৈর্ঘ্য পুনর্গঠন করতে পারে।

মন্তব্য করুন