קידוד כתובות URL

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

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

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

יצירת כתובת URL תקינה

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

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

אנחנו צריכים לתרגם תווים מיוחדים כי כל כתובות ה-URL צריכות להתאים לתחביר שצוין במפרט של מזהה המשאבים האחיד (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 W X Y Z 0 1 2 3 4 5 6 7 8 9 מחרוזות טקסט, שימוש בסכימה (http), יציאה (8080) וכו'.
לא שמור - _ . ~ מחרוזות טקסט
בוצעה הזמנה ! * ' ( ) ; : @ & = + $ , / ? % # [ ] תווי בקרה או מחרוזות טקסט

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

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

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

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