מקודד ומפענח URL

קודדו טקסט ב-percent-encoding עבור כתובות URL ו-query strings, פענחו כתובות מקודדות, ופרקו כל URL לחלקיו עם פרמטרי query מפוענחים.

רץ בדפדפן שלכםבלי הרשמהשום דבר לא מועלה

מקודד

איך משתמשים בכלי קידוד / פענוח URL

  1. בחרו קידוד או פענוח.
  2. בקידוד, בחרו רכיב עבור ערך query בודד או מקטע נתיב, URL מלא כדי לשמור על מבנה ה-URL, או נתוני טופס עבור application/x-www-form-urlencoded.
  3. הדביקו את הטקסט. התוצאה מופיעה מיד; רצפי escape שגויים מדווחים עם המיקום שלהם.
  4. הדביקו URL מלא במנתח ה-URL כדי לראות את ה-host, הנתיב, ה-fragment וכל פרמטר query מפוענח.

מה זה קידוד URL?

כתובות URL יכולות להכיל רק קבוצה מוגבלת של תווי ASCII (RFC 3986). כל השאר, כולל רווחים, אותיות שאינן באנגלית ותווים בעלי משמעות מיוחדת כמו &, ? ו-#, נכתב כסימן אחוז ואחריו שתי ספרות hex לכל בית של UTF-8. רווח הופך ל-%20 ו-é הופך ל-%C3%A9.

encodeURIComponent לעומת encodeURI

פונקציהלא נוגעת ב-מתאימה ל-
encodeURIComponentA-Z a-z 0-9 - _ . ~ערך query בודד, מקטע נתיב או שם פרמטר
encodeURIוגם : / ? # [ ] @ ! $ & ' ( ) * + , ; =URL שלם שהמבנה שלו חייב להישמר

שימוש ב-encodeURI על ערך query הוא באג קלאסי: & בתוך הערך לא עובר escape, ולכן הוא מפצל את הפרמטר לשניים. מצב הרכיב של הכלי מבצע escape גם ל-! ' ( ) * לעמידה קפדנית ב-RFC 3986.

‏%20 או + עבור רווחים?

בנתיבים, רווח חייב להיות %20. בשליחת טפסי HTML‏ (application/x-www-form-urlencoded) ובהרבה query strings, רווח נכתב כ-+. בפענוח, הפעילו התייחסות ל-+ כרווח עבור נתוני טופס, וכבו אותה כשסימן פלוס מילולי חשוב, כמו ב-jane+test@example.com.

שאלות נפוצות

למה אני מקבל „Malformed escape” בפענוח?
אחרי % חייבות לבוא בדיוק שתי ספרות hex. סימן אחוז מילולי, כמו ב-„50% הנחה”, היה צריך להיות מקודד כ-%25. השגיאה מציגה את המיקום של הרצף השגוי.
מה פירוש „Invalid UTF-8 byte sequence”?
הבתים לא קודדו כ-UTF-8, לרוב כי הטקסט הופק על ידי מערכת ישנה שמשתמשת ב-Latin-1 (למשל %E9 עבור é במקום %C3%A9), או שהמחרוזת נחתכה באמצע תו.
האם לקודד את כל ה-URL או רק את הפרמטרים?
קודדו כל שם וערך של פרמטר בנפרד בקידוד רכיב, ואז חברו אותם עם = ו-&. קידוד URL שלם במצב רכיב יבצע escape גם ל-:// וישבור אותו.
האם קידוד כפול הוא בעיה?
כן. קידוד של מחרוזת שכבר מקודדת הופך את %20 ל-%2520. אם אתם רואים %25 ואחריו ספרות hex, הערך כנראה קודד פעמיים. פענחו אותו פעמיים כדי לשחזר את המקור.

כלים קשורים