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