อักขระบางตัวต้องไม่เป็นส่วนหนึ่งของ URL (เช่น ช่องว่าง) และอักขระบางตัวมีความหมายพิเศษใน URL ในแบบฟอร์ม HTML ระบบจะใช้อักขระ =
เพื่อแยกชื่อออกจากค่า ไวยากรณ์ทั่วไปของ URI ใช้การเข้ารหัส URL เพื่อจัดการกับปัญหานี้ ขณะที่แบบฟอร์ม HTML จะสร้างการแทนที่เพิ่มเติมบางส่วนแทนที่จะใช้การเข้ารหัสเปอร์เซ็นต์สําหรับอักขระดังกล่าวทั้งหมด
เช่น ช่องว่างในสตริงจะได้รับการเข้ารหัสด้วย %20
หรือแทนที่ด้วยเครื่องหมายบวก (+
) หากคุณใช้อักขระไปป์ (|
) เป็นตัวคั่น อย่าลืมเข้ารหัสท่อเป็น %7C
คอมมาในสตริงควรเข้ารหัสเป็น %2C
เราขอแนะนําให้คุณใช้ไลบรารีการสร้าง URL ตามปกติของแพลตฟอร์มเพื่อเข้ารหัส URL โดยอัตโนมัติเพื่อให้แน่ใจว่า URL จะมีการ Escape อย่างถูกต้องสําหรับแพลตฟอร์มของคุณ
การสร้าง URL ที่ถูกต้อง
คุณอาจคิดว่า URL "ถูกต้อง" เป็น URL ที่ชัดเจนด้วยตนเอง แต่ก็ไม่เป็นเช่นนั้น เช่น URL ที่ป้อนในแถบที่อยู่ในเบราว์เซอร์อาจมีสัญลักษณ์พิเศษ (เช่น "上海+中國"
) ซึ่งเบราว์เซอร์ต้องแปลอักขระเหล่านั้นเป็นการการเข้ารหัสแบบอื่นก่อนที่จะส่ง
สําหรับโทเค็นเดียวกัน โค้ดใดๆ ที่สร้างหรือยอมรับอินพุต UTF-8 อาจถือว่า URL ที่มีอักขระ UTF-8 เป็น "valid" แต่จะต้องมีการแปลอักขระเหล่านั้นก่อนที่จะส่งให้กับเว็บเซิร์ฟเวอร์
กระบวนการนี้เรียกว่า
การเข้ารหัส URL หรือการเข้ารหัสเปอร์เซ็นต์
สัญลักษณ์พิเศษ
เราต้องแปลสัญลักษณ์พิเศษเนื่องจาก URL ทั้งหมดต้องเป็นไปตามไวยากรณ์ที่ระบุไว้ในข้อกําหนด Uniform Resource Identifier (URI) ซึ่งหมายความว่า URL ต้องมีเฉพาะอักขระ ASCII ที่มีสัญลักษณ์พิเศษเท่านั้น ได้แก่ สัญลักษณ์ที่เป็นตัวอักษรและตัวเลขคละกันที่คุ้นเคย และอักขระที่สงวนไว้บางส่วนเพื่อใช้เป็นอักขระควบคุมภายใน URL ตารางนี้สรุปอักขระเหล่านี้
ตั้งค่า | อักขระ | การใช้ URL |
---|---|---|
ตัวเลขและตัวอักษร | ก พ ไ ม้ ต้องการ | สตริงข้อความ การใช้งานสคีม (http ) พอร์ต (8080 ) ฯลฯ |
ไม่ได้จอง | - _ ~ | สตริงข้อความ |
จองแล้ว | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | ควบคุมอักขระและ/หรือสตริงข้อความ |
เมื่อสร้าง URL ที่ถูกต้อง คุณต้องตรวจสอบว่ามีเพียงอักขระเหล่านั้นที่แสดงในตารางสรุปอักขระ URL ที่ถูกต้อง โดยทั่วไปแล้ว การสร้าง URL เพื่อใช้อักขระชุดนี้จะทําให้เกิดปัญหา 2 รายการ คือ การละเว้น 1 ครั้งและการแทนที่ 1 รายการ ดังนี้
- อักขระที่คุณต้องการจัดการอยู่นอกชุดด้านบน เช่น อักขระภาษาต่างประเทศ เช่น
上海+中國
ต้องเข้ารหัสโดยใช้อักขระด้านบน ตามรูปแบบยอดนิยม การเว้นวรรค (ซึ่งไม่อนุญาตให้ใช้ใน URL) มักจะแสดงด้วยอักขระบวก'+'
ด้วย - อักขระข้างต้นที่กําหนดไว้เป็นอักขระที่สงวนไว้ แต่จะต้องใช้จริงๆ เท่านั้น
ตัวอย่างเช่น
?
จะใช้ภายใน URL เพื่อระบุจุดเริ่มต้นของสตริงคําค้นหา หากต้องการใช้สตริง "? และปริศนา" คุณจะต้องเข้ารหัสอักขระ'?'
อักขระทั้งหมดที่จะเข้ารหัสด้วย URL เข้ารหัสโดยใช้อักขระ '%'
และค่าฐานสิบหก 2 อักขระที่ตรงกับอักขระ 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 เหล่านั้น โดยถือว่าการป้อนข้อมูลของผู้ใช้เป็นอักขระตามตัวอักษร
นอกจากนี้ URL ยังจํากัดอยู่ที่ 8, 192 อักขระสําหรับบริการบนเว็บ Google Maps Platform และ API เว็บแบบคงที่ทั้งหมด สําหรับบริการส่วนใหญ่ แทบจะไม่มีจํานวนอักขระสูงสุดถึงเกณฑ์ที่กําหนด อย่างไรก็ตาม โปรดทราบว่าบริการบางอย่างจะมีพารามิเตอร์หลายรายการซึ่งอาจส่งผลให้เกิด URL แบบยาว