קידוד כתובת 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

לפעמים מורכב. לדוגמה, משתמש יכול להזין כתובת כ"רחוב 5 ו-Main St.‎" באופן כללי, צריך ליצור את כתובת ה-URL מהחלקים שלה, ולתייחס לכל קלט של משתמש בתור תווים מילוליים.

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