دیکھ رہے ہیں: اردو انگریزی پر جائیں

URL انکوڈر اور ڈیکوڈر

URLs، query parameters، اور path segments میں محفوظ استعمال کے لیے سٹرنگز کو پرسنٹ-انکوڈ یا ڈیکوڈ کریں۔

  1. اوپر والے باکس میں وہ سٹرنگ پیسٹ کریں جسے آپ انکوڈ (یا ڈیکوڈ) کرنا چاہتے ہیں۔
  2. ایک واحد query ویلیو یا path سیگمنٹ کے لیے کمپوننٹ منتخب کریں، یا ایک پورے URL کے لیے مکمل URL جس میں صرف چند غیر محفوظ حروف ہیں۔
  3. انکوڈ یا ڈیکوڈ پر کلک کریں۔ آؤٹ پٹ ان پٹ کی جگہ لے لیتا ہے۔
  4. نتیجہ کاپی کریں، یا دوبارہ شروع کرنے کے لیے صاف کریں پر کلک کریں۔
یہ کیا کرتا ہے؟

URL / پرسنٹ-انکوڈنگ URL میں غیر محفوظ یا مبہم حروف کو % کے ساتھ بدلتی ہے اس کے بعد ہیکس میں ان کی UTF-8 بائٹ ویلیو۔ کمپوننٹ موڈ encodeURIComponent() استعمال کرتا ہے اور ہر محفوظ حرف کو انکوڈ کرتا ہے — query string یا path میں جو ویلیوز آپ ایمبیڈ کرتے ہیں ان کے لیے درست۔ مکمل 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 میں ان کا ساختاری مطلب ہے۔

عام غلطیاں اور نقصانات

زیادہ تر انکوڈنگ کے مسائل غلط موڈ منتخب کرنے یا ایک ہی ان پٹ پر ٹول کو دو بار چلانے سے آتے ہیں۔ نیچے کے آئٹمز ان کیسز کا احاطہ کرتے ہیں جو ہم سب سے زیادہ دیکھتے ہیں۔

  • query ویلیوز کے لیے encodeURI کا استعمال۔ encodeURI("a&b=c") a&b=c دیتا ہے (غیر تبدیل شدہ)، جو query string کو توڑتا ہے۔ ویلیوز کے لیے کمپوننٹ موڈ (encodeURIComponent) استعمال کریں۔
  • ڈبل انکوڈنگ۔ hello%20world کو دوسری بار انکوڈ کرنے سے hello%2520world بنتا ہے۔ پہلے ڈیکوڈ کریں یا ایک لیئر چھوڑ دیں۔
  • # بھول جانا۔ query ویلیو کے اندر ایک # کو fragment کی شروعات سمجھا جاتا ہے جب تک کہ اسے %23 کے طور پر انکوڈ نہ کیا جائے۔
  • پلس نشان کی کنفیوژن۔ + form-encoded bodies میں space کا مطلب ہے لیکن URL path یا query میں یہ لفظی + ہے۔ query ویلیو میں ایک حقیقی پلس نشان بھیجنے کے لیے، اسے %2B کے طور پر انکوڈ کریں۔
  • بگڑی ہوئی percent sequence۔ ایک لفظی % جسے کبھی انکوڈ نہیں کیا گیا decodeURIComponent کو URI malformed پھینکنے پر مجبور کرتا ہے۔ یا تو % کو %25 کے طور پر انکوڈ کریں یا ڈیکوڈ کرنے سے پہلے تنہا پرسنٹس ہٹا دیں۔
  • UTF-8 بمقابلہ Latin-1 لیگیسی سرورز۔ یہ ٹول ہمیشہ UTF-8 استعمال کرتا ہے۔ کچھ بہت پرانے سسٹمز Latin-1 / windows-1252 کی توقع کرتے ہیں — وہاں é %E9 ہے، %C3%A9 نہیں۔ اگر آپ mojibake دیکھتے ہیں، تو دوسرا سرا UTF-8 نہیں ہے۔
اکثر پوچھے جانے والے سوالات

encodeURI اور encodeURIComponent میں کیا فرق ہے؟

encodeURIComponent ہر وہ چیز escape کرتا ہے جو حرف، عدد، یا -_.!~*'() میں سے ایک نہیں ہے، تو یہ انفرادی query ویلیوز اور path segments کے لیے محفوظ ہے۔ encodeURI :/?#&= جیسے URL-محفوظ حروف کو تنہا چھوڑ دیتا ہے، تو یہ ایک پورے URL کو انکوڈ کرنے کے لیے ہے جس میں پہلے ہی ساخت ہے۔ 95% وقت کمپوننٹ استعمال کریں؛ مکمل URL صرف اس وقت استعمال کریں جب آپ کے پاس زیادہ تر درست URL ہو جس میں بھولے بھٹکے spaces یا Unicode ہوں۔

query string میں واقعی کن حروف کو انکوڈنگ کی ضرورت ہے؟

query string کے delimiters & اور = کو ویلیو کے اندر انکوڈ کرنا ضروری ہے (ورنہ وہ separators کی طرح لگتے ہیں)۔ Space %20 یا + بنتا ہے۔ # fragment marker کو انکوڈ کرنا ضروری ہے۔ اس کے علاوہ: /, ?, کوئی بھی غیر-ASCII، اور control characters۔ encodeURIComponent یہ سب سنبھالتا ہے؛ encodeURI &, =, /, ?, # کو بغیر انکوڈ چھوڑ دیتا ہے کیونکہ وہ URL-ساختاری ہیں۔

میرا URL کیوں ڈبل انکوڈ ہو رہا ہے؟

ڈبل انکوڈنگ اس وقت ہوتی ہے جب آپ ایک ایسی ویلیو انکوڈ کرتے ہیں جو پہلے ہی انکوڈ شدہ ہے۔ ایک space %20 بنتا ہے، پھر % خود %25 بنتا ہے، %2520 دیتا ہے۔ عام طور پر ایک پہلے سے انکوڈ شدہ URL کو encodeURIComponent کے ذریعے دوبارہ بھیجنے، یا ایک framework جو آپ کی manual انکوڈنگ کے اوپر auto-encode کرتا ہے، کی وجہ سے۔ ایک بار ڈیکوڈ کریں اور صاف طور پر دوبارہ انکوڈ کریں، یا ایک لیئر چھوڑ دیں۔

یہ emoji یا اونچے حروف جیسے غیر-ASCII حروف کو کیسے سنبھالتا ہے؟

JavaScript کے انکوڈرز پہلے غیر-ASCII حروف کو UTF-8 bytes میں تبدیل کرتے ہیں، پھر ہر byte کو percent-encode کرتے ہیں۔ تو é %C3%A9 (دو bytes) بنتا ہے اور 😀 جیسا ایک emoji %F0%9F%98%80 (چار bytes) بنتا ہے۔ ڈیکوڈنگ اس عمل کو الٹ دیتی ہے۔ یہ معیاری RFC 3986 طرز عمل ہے اور ہر جدید سرور کے ساتھ کام کرتا ہے۔

ڈیکوڈنگ "URI malformed" کے ساتھ کیوں ناکام ہوتی ہے؟

decodeURIComponent جب ایک غلط percent sequence دیکھتا ہے تو پھینکتا ہے — ایک تنہا % جس کے بعد دو hex digits نہیں ہیں (مثلاً %ZZ یا صرف %)، یا UTF-8 byte sequences جو درست نہیں ہیں (مثلاً درست continuation byte کے بغیر %C3)۔ عام وجوہات: ان پٹ میں ایک لفظی % جسے کبھی انکوڈ نہیں کیا گیا، یا ایک سٹرنگ جو پہلے ہی ایک بار ڈیکوڈ ہو چکی ہے اور ابھی بھی اس میں percent signs ہیں۔

کیا spaces کو + یا %20 بننا چاہیے؟

دونوں عملی طور پر دیکھے جاتے ہیں۔ %20 ہر جگہ درست ہے — paths، query strings، اور fragments میں۔ + shortcut کا مطلب صرف "space" ہے application/x-www-form-urlencoded format کے اندر جو HTML form submissions کے لیے استعمال ہوتا ہے۔ یہ ٹول %20 استعمال کرتا ہے کیونکہ encodeURIComponent کرتا ہے۔ اگر آپ کو خاص طور پر + چاہیے تو، انکوڈنگ کے بعد %20 کو + سے بدلیں۔