URL انکوڈنگ اور ڈیکوڈنگ کا مقصد اور طریقہ کار
ویب براؤزرز اور سرورز کے درمیان ڈیٹا کی منتقلی کے لیے مخصوص قوانین وضع کیے گئے ہیں۔ انٹرنیٹ پر بھیجے جانے والے URLs میں صرف مخصوص ASCII حروف ہی استعمال کیے جا سکتے ہیں۔ جب کسی URL میں خالی جگہ (space) یا غیر ASCII حروف (جیسے اردو یا چینی زبان کے الفاظ) شامل کرنے ہوں، تو انہیں ایک خاص فارمیٹ میں تبدیل کرنا ضروری ہوتا ہے جسے فیصد انکوڈنگ (percent-encoding) یا URL انکوڈنگ کہا جاتا ہے۔
اس عمل کے دوران، غیر محفوظ یا غیر ASCII حروف کو فیصد کے نشان (%) اور اس کے بعد ان کے UTF-8 بائٹ کوڈ کی ہیکساڈیسیمل (hexadecimal) ویلیو سے بدل دیا جاتا ہے۔ مثال کے طور پر، خالی جگہ (space) کو %20 میں تبدیل کر دیا جاتا ہے۔ ڈیکوڈنگ کا عمل اس کے بالکل برعکس کام کرتا ہے، جہاں فیصد ایسکیپس کو واپس ان کے اصل حروف میں تبدیل کر دیا جاتا ہے تاکہ انسان اسے آسانی سے پڑھ سکے۔ یہ ٹول ان دونوں عمل کو انجام دینے کے لیے استعمال کیا جاتا ہے۔
مکمل URL اور URL Component میں فرق
جب آپ URL کو انکوڈ یا ڈیکوڈ کرتے ہیں، تو آپ کو یہ فیصلہ کرنا ہوتا ہے کہ آیا آپ کو پورے URL پر عمل کرنا ہے یا صرف اس کے کسی ایک حصے (component) پر۔ ان دونوں طریقوں میں واضح فرق ہے:
- Component کا دائرہ کار (
Component): یہ طریقہ کارencodeURIComponentاورdecodeURIComponentکے جاوا اسکرپٹ فنکشنز کا استعمال کرتا ہے۔ یہ کوئری ویلیوز، پاتھ کے ٹکڑوں، یا فارم ویلیوز کو انکوڈ کرنے کے لیے موزوں ہے۔ یہ ان تمام حروف کو بھی انکوڈ کر دیتا ہے جن کے URL میں خاص معنی ہوتے ہیں، جیسے کہ:,/,?,&, اور=۔ - مکمل URL کا دائرہ کار (
Full URL): یہ طریقہ کارencodeURIاورdecodeURIکا استعمال کرتا ہے۔ اس کا مقصد پورے URL کو انکوڈ کرنا ہوتا ہے جبکہ اس کے بنیادی ڈھانچے کو برقرار رکھا جاتا ہے۔ یہ انکوڈنگ کے دوران:,/,?,&, اور=جیسے مخصوص حروف کو تبدیل نہیں کرتا تاکہ وہ پڑھنے کے قابل رہیں اور براؤزر URL کے پاتھ اور پیرامیٹرز کو درست طریقے سے سمجھ سکے۔
HTML اینٹیٹی ایسکیپنگ اور ان ایسکیپنگ
HTML دستاویزات میں کچھ حروف ایسے ہوتے ہیں جنہیں براؤزر کوڈنگ کے طور پر دیکھتا ہے۔ مثال کے طور پر، < اور > کے نشانات کو براؤزر HTML ٹیگز کا آغاز اور اختتام سمجھتا ہے۔ اگر آپ ان حروف کو عام متن کے طور پر ویب پیج پر دکھانا چاہتے ہیں، تو آپ کو HTML اینٹیٹی ایسکیپنگ (HTML entity escaping) کا استعمال کرنا پڑتا ہے۔
جب آپ HTML اینٹیٹیز موڈ منتخب کرتے ہیں، تو یہ ٹول درج ذیل حروف کو ان کے محفوظ اینٹیٹی کوڈز میں تبدیل کر دیتا ہے:
<کو<میں تبدیل کیا جاتا ہے۔>کو>میں تبدیل کیا جاتا ہے۔&کو&میں تبدیل کیا جاتا ہے۔- ڈبل اور سنگل کوٹس (quotes) کو ان کے متعلقہ کوڈز میں تبدیل کیا جاتا ہے۔
- غیر ASCII متن کو بھی محفوظ اینٹیٹیز میں تبدیل کر دیا جاتا ہے۔
اس عمل کے ذریعے متن کو HTML کوڈ یا اوٹریبیوٹس کے اندر محفوظ طریقے سے پیسٹ کیا جا سکتا ہے۔ ان ایسکیپنگ (unescaping) کا عمل ان کوڈز کو واپس ان کے اصل حروف میں تبدیل کر دیتا ہے۔ جب HTML اینٹیٹیز کا موڈ منتخب کیا جاتا ہے، تو انٹرفیس سے URL کے دائرہ کار کا کنٹرول خود بخود چھپ جاتا ہے۔
فیصد ایسکیپس اور UTF-8 کی خرابیاں
URL ڈیکوڈنگ کے دوران، فیصد کے بعد آنے والے کوڈز کا مکمل اور درست UTF-8 سیکوینس ہونا لازمی ہے۔ اگر ان پٹ میں کوئی ادھورا یا ٹوٹا ہوا فیصد ایسکیپ شامل ہو، تو ڈیکوڈنگ کا عمل ناکام ہو جاتا ہے۔
مثال کے طور پر، ایک درست انکوڈ شدہ متن hello%20world%20%26%20city%3D%E4%B8%8A%E6%B5%B7 کامیابی سے ڈیکوڈ ہو جائے گا۔ لیکن اگر ان پٹ میں %E0%A4%A جیسا کوئی نامکمل یا ٹوٹا ہوا سیکوینس دیا جائے، تو سسٹم اس کا اندازہ نہیں لگا سکتا اور ڈیکوڈنگ روک دی جاتی ہے۔ ایسی صورت میں ٹول اسکرین پر یہ خرابی ظاہر کرتا ہے: "اس URL ٹیکسٹ میں فیصد (percent) ایسکیپ ٹوٹا ہوا ہے۔"
انکوڈنگ بمقابلہ سیکیورٹی سینیٹائزیشن
یہ سمجھنا انتہائی ضروری ہے کہ URL انکوڈنگ/ایسکیپنگ اور سیکیورٹی سینیٹائزیشن (security sanitization) دو الگ تصورات ہیں۔
- انکوڈنگ اور ایسکیپنگ: اس کا مقصد صرف ڈیٹا کی شکل کو تبدیل کرنا ہے تاکہ وہ مخصوص پروٹوکولز (جیسے HTTP) یا فارمیٹس (جیسے HTML) کے قوانین کے مطابق درست طریقے سے منتقل اور ظاہر ہو سکے۔ یہ ڈیٹا کو خراب ہونے سے بچاتا ہے۔
- سینیٹائزیشن: اس کا مقصد نقصان دہ کوڈز، جیسے کہ کراس سائٹ اسکرپٹنگ (XSS) حملوں یا انجیکشنز کو روکنے کے لیے ان پٹ کو فلٹر یا صاف کرنا ہوتا ہے۔ یہ ٹول صرف انکوڈنگ اور ڈیکوڈنگ انجام دیتا ہے، یہ سیکیورٹی سینیٹائزیشن کے متبادل کے طور پر استعمال نہیں کیا جا سکتا۔
ٹول کے استعمال کے اصول اور حدود
اس ٹول کو استعمال کرتے وقت درج ذیل تکنیکی حدود اور اصولوں کا خیال رکھیں:
- حجم کی حد: ان پٹ فیلڈ میں زیادہ سے زیادہ 2,000,000 حروف پیسٹ کیے جا سکتے ہیں۔ اگر ان پٹ اس سے بڑا ہوگا، تو ٹول "یہ ان پٹ اس ٹول کے لیے بہت بڑا ہے۔ اسے
{max}حروف سے کم رکھیں۔" کا پیغام دکھائے گا۔ - خالی ان پٹ: اگر آپ بغیر کچھ لکھے تبدیل کرنے کی کوشش کریں گے، تو "پہلے کچھ ان پٹ پیسٹ کریں۔" کا پیغام ظاہر ہوگا۔
- وقت کی حد: اگر ڈیٹا پروسیسنگ میں غیر معمولی وقت لگے، تو سسٹم "اس تبدیلی میں بہت زیادہ وقت لگ رہا ہے۔ چھوٹا ان پٹ آزمائیں۔" کی وارننگ دکھائے گا۔
- عام ناکامی: کسی بھی دوسری نامعلوم وجہ سے تبدیلی نہ ہونے پر "اس ان پٹ کو تبدیل نہیں کیا جا سکا۔" کا پیغام ظاہر ہوتا ہے۔
جب آپ ان پٹ اور آؤٹ پٹ کو صاف کرتے ہیں تو "ان پٹ اور آؤٹ پٹ صاف کر دیے گئے۔" کا پیغام ملتا ہے۔ آؤٹ پٹ کو ان پٹ فیلڈ میں منتقل کرنے پر "آؤٹ پٹ کو ان پٹ میں منتقل کر دیا گیا۔" اور نمونہ لوڈ کرنے پر "مثال لوڈ ہو گئی۔" کا پیغام ظاہر ہوتا ہے۔
ڈیٹا پرائیویسی کی معلومات
آپ کا URL اور HTML ٹیکسٹ آپ کے براؤزر میں تبدیل ہوتا ہے۔ BroBroGo پر کچھ بھی اپ لوڈ نہیں کیا جاتا۔
اکثر پوچھے جانے والے سوالات (FAQ)
کیا مجھے URL component منتخب کرنا چاہیے یا full URL؟
کوئری ویلیوز، پاتھ کے ٹکڑوں، یا فارم ویلیوز کے لیے Component کا استعمال کریں۔ مکمل URL کا استعمال تب کریں جب آپ: /? & = جیسے حروف کو پڑھنے کے قابل رکھنا چاہتے ہوں۔
HTML اینٹیٹی ایسکیپنگ کیا تبدیل کرتی ہے؟
یہ <، >، &، کوٹس اور غیر ASCII متن جیسے حروف کو ایسی اینٹیٹیز (entities) میں تبدیل کرتا ہے جنہیں HTML ٹیکسٹ یا اوٹریبیوٹس میں محفوظ طریقے سے پیسٹ کیا جا سکتا ہے۔
URL ڈیکوڈنگ بعض اوقات کیوں ناکام ہو جاتی ہے؟
فیصد (percent) ایسکیپس کا مکمل UTF-8 سیکوینس ہونا ضروری ہے۔ ایک ٹوٹا ہوا سیکوینس جیسے %E0%A4%A اندازہ لگائے بغیر ڈیکوڈ نہیں کیا جا سکتا۔
کیا اس ٹول کو استعمال کرنے سے میرا ڈیٹا انٹرنیٹ پر شیئر ہوتا ہے؟
جی نہیں، آپ کا URL اور HTML ٹیکسٹ آپ کے براؤزر میں تبدیل ہوتا ہے۔ BroBroGo پر کچھ بھی اپ لوڈ نہیں کیا جاتا۔