קידוד כתובת URL

תווים מסוימים אינם יכולים להיות חלק מכתובת האתר (לדוגמה, הרווח) ולתווים אחרים יש משמעות מיוחדת בכתובת האתר. בטופסי HTML, התו = משמש להפרדה בין שם לערך. התחביר הכללי של URI משתמש בקידוד כתובות URL כדי לטפל בבעיה הזו, ואילו טופסי HTML מספקים כמה החלפות נוספות במקום להחיל קידוד באחוזים לכל התווים מהסוג הזה.

לדוגמה, רווחים במחרוזת מקודדים באמצעות %20 או מוחלפים בסימן הפלוס (+). אם משתמשים בתו קו אנכי (|) כמפריד, חשוב לקודד את הקו המפריד כ-%7C. פסיק במחרוזת צריך להיות מקודד כ-%2C.

מומלץ להשתמש בספריות הבנייה של כתובות URL הרגילות של הפלטפורמה כדי לקודד באופן אוטומטי את כתובות ה-URL, על מנת לוודא שכתובות ה-URL מסומנות בתו בריחה (escape) כראוי בפלטפורמה.

יצירת כתובת URL חוקית

אתם עשויים לחשוב שכתובת URL 'תקפה' היא מובנת מאליה, אבל זה לא המקרה. לדוגמה, כתובת URL שהוזנה בסרגל הכתובות בדפדפן עשויה להכיל תווים מיוחדים (למשל "上海+中國"). הדפדפן צריך לתרגם באופן פנימי את התווים לקידוד אחר לפני השידור. באותו אסימון, כל קוד שיוצר או מקבל קלט UTF-8 עשוי להתייחס לכתובות URL עם תווי UTF-8 כ'תקין', אבל גם צריך לתרגם את התווים האלה לפני שליחתם לשרת אינטרנט. התהליך הזה נקרא קידוד כתובות URL או קידוד אחוזים.

תווים מיוחדים

עלינו לתרגם תווים מיוחדים כי כל כתובות ה-URL צריכות להתאים לתחביר שצוין במפרט Uniform Resource Identifier (URI). פירוש הדבר הוא שכתובות URL חייבות להכיל רק קבוצת משנה מיוחדת של תווי ASCII: הסמלים האלפאנומריים המוכרים וכמה תווים שמורים לשימוש כתווי בקרה בכתובות URL. בטבלה הבאה מסכם את התווים הבאים:

סיכום תווים חוקיים של כתובת URL
הגדרהתוויםשימוש בכתובת URL
אלפאנומרי a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V X Y Z 3 0 1 2 2 מחרוזות טקסט, שימוש בסכימה (http), יציאה (8080) וכו'.
לא שמור - _ . ~ מחרוזות טקסט
בוצעה הזמנה ! * ' ( ) ; : @ & = + $ , / ? % # [ ] תווי בקרה ו/או מחרוזות טקסט

כשיוצרים כתובת URL חוקית, צריך לוודא שהיא מכילה רק את התווים שמופיעים בסיכום של הטבלה 'תווים חוקיים של כתובת URL'. קישור של כתובת URL לשימוש בקבוצת התווים הזו מוביל בדרך כלל לשתי בעיות – אחת של השמטה ואחת להחלפה:

  • התווים שברצונך לטפל בהם קיימים מחוץ לקבוצה שלמעלה. לדוגמה, יש לקודד תווים בשפות זרות כמו 上海+中國 באמצעות התווים שמפורטים למעלה. בדרך כלל, רווחים (אסור לשימוש בכתובות URL) מיוצגים לעיתים קרובות באמצעות התו '+'.
  • התווים בתוך הקבוצה שלמעלה קיימים כתווים שמורים, אבל צריך להשתמש בהם מילולית. לדוגמה, המחרוזת ? מופיעה בתוך כתובות URL כדי לציין את ההתחלה של מחרוזת השאילתה. אם רוצים להשתמש במחרוזת "? ובמסתוריות", צריך לקודד את התו '?'.

כל התווים שנמצאים בקידוד כתובות 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 שקיבלתם מקלט של משתמשים. לדוגמה, משתמש יכול להזין כתובת בתור "הרחוב הראשי והחמישי" באופן כללי, מומלץ ליצור את כתובת ה-URL מהחלקים שלה, ולהתייחס לכל קלט של משתמשים כאל תווים מילוליים.

בנוסף, כתובות ה-URL מוגבלות ל-16,384 תווים בכל שירותי האינטרנט של הפלטפורמה של מפות Google וממשקי ה-API הסטטיים לאינטרנט. ברוב השירותים, מגבלת התווים הזו תגיע רק לעיתים רחוקות. עם זאת, שימו לב שלשירותים מסוימים יש כמה פרמטרים שעשויים להוביל לכתובות URL ארוכות.