קידוד כתובת URL

תווים מסוימים לא יכולים להיות חלק מכתובת URL (לדוגמה, הרווח) ולתווים אחרים יש משמעות מיוחדת בכתובת ה-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 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 W X Y Z 3 0 1 5 6 מחרוזות טקסט, שימוש בסכמה (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 תווים בכל שירותי האינטרנט וממשקי ה-API הסטטיים של הפלטפורמה של מפות Google. ברוב השירותים בקרוב נגביל את מגבלת התווים. עם זאת, שימו לב שלשירותים מסוימים יש כמה פרמטרים שעשויים להוביל לכתובות URL ארוכות.