URL จะมีอักขระบางตัวไม่ได้ (เช่น ช่องว่าง) และอักขระอื่นๆ บางตัวมีความหมายพิเศษใน URL ในแบบฟอร์ม HTML จะใช้อักขระ =
เพื่อ
แยกชื่อออกจากค่า ไวยากรณ์ทั่วไปของ URI ใช้การเข้ารหัส URL
เพื่อจัดการปัญหานี้ ขณะที่แบบฟอร์ม HTML จะทำการแทนที่เพิ่มเติม
แทนที่จะใช้การเข้ารหัสเปอร์เซ็นต์สำหรับอักขระดังกล่าวทั้งหมด
เช่น ช่องว่างในสตริงจะได้รับการเข้ารหัสด้วย %20
หรือแทนที่ด้วย
เครื่องหมายบวก (+
) หากคุณใช้เครื่องหมายไปป์ (|
) เป็นตัวคั่น โปรด
เข้ารหัสไปป์เป็น %7C
คอมมาในสตริงควรเข้ารหัสเป็น %2C
เราขอแนะนำให้คุณใช้ไลบรารีการสร้าง URL ปกติของแพลตฟอร์มเพื่อเข้ารหัส URL โดยอัตโนมัติ เพื่อให้มั่นใจว่า URL จะมีการกำหนดอักขระหลีกอย่างเหมาะสมสำหรับแพลตฟอร์มของคุณ
การสร้าง URL ที่ถูกต้อง
คุณอาจคิดว่า URL ที่ "ถูกต้อง" นั้นชัดเจนในตัวอยู่แล้ว แต่
ในความเป็นจริงแล้วไม่ใช่ ตัวอย่างเช่น URL ที่ป้อนในแถบที่อยู่ของเบราว์เซอร์อาจมีอักขระพิเศษ (เช่น "上海+中國"
) เบราว์เซอร์ต้องแปลอักขระเหล่านั้นเป็นการเข้ารหัสอื่นภายในก่อนที่จะส่ง
ในทำนองเดียวกัน โค้ดใดๆ ที่สร้างหรือยอมรับอินพุต UTF-8
อาจถือว่า URL ที่มีอักขระ UTF-8 เป็น "ใช้ได้" แต่ก็จะต้อง
แปลอักขระเหล่านั้นก่อนที่จะส่งไปยังเว็บเซิร์ฟเวอร์ด้วย
กระบวนการนี้เรียกว่า
URL-encoding หรือ percent-encoding
อักขระพิเศษ
เราต้องแปลอักขระพิเศษเนื่องจาก URL ทั้งหมดต้องเป็นไปตามรูปแบบคำสั่งที่ระบุโดยข้อกำหนด Uniform Resource Identifier (URI) ซึ่งหมายความว่า URL ต้องมีเฉพาะอักขระ ASCII ที่เป็นชุดย่อยพิเศษ ได้แก่ สัญลักษณ์ตัวอักษรและตัวเลขที่คุ้นเคย และอักขระที่สงวนไว้บางตัวสำหรับใช้เป็นอักขระควบคุม ภายใน URL ตารางนี้สรุปอักขระดังกล่าว
ตั้งค่า | อักขระ | การใช้งาน URL |
---|---|---|
ตัวอักษรและตัวเลขคละกัน | ก ข ค ง จ ฉ ช ซ ฌ ญ ฎ ฏ ฐ ฑ ฒ ณ ด ต ถ ท ธ น บ ป ผ พ ภ ม ย ร ล ว ศ ษ ส ห ฬ อ ฮ 0 1 2 3 4 5 6 7 8 9 | สตริงข้อความ การใช้รูปแบบ (http ) พอร์ต (8080 ) ฯลฯ |
ไม่ได้จอง | - _ . ~ | สตริงข้อความ |
จองแล้ว | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | อักขระควบคุมและ/หรือสตริงข้อความ |
เมื่อสร้าง URL ที่ถูกต้อง คุณต้องตรวจสอบว่า URL นั้นมีเฉพาะอักขระที่แสดงในตาราง เท่านั้น การปรับ URL ให้ใช้ชุดอักขระนี้มัก ทำให้เกิดปัญหา 2 อย่าง ได้แก่ ปัญหาการละเว้นและปัญหาการแทนที่
- อักขระที่คุณต้องการจัดการอยู่นอกชุดอักขระ
ที่ระบุไว้ข้างต้น เช่น อักขระในภาษาต่างประเทศ
เช่น
上海+中國
ต้องได้รับการเข้ารหัสโดยใช้อักขระ ด้านบน โดยทั่วไปแล้ว ช่องว่าง (ซึ่งไม่อนุญาตให้ใช้ใน URL) มักจะแสดงโดยใช้เครื่องหมายบวก'+'
ด้วย - อักขระจะอยู่ในชุดด้านบนเป็นอักขระที่สงวนไว้
แต่ต้องใช้ตามตัวอักษร
เช่น
?
ใช้ภายใน URL เพื่อระบุจุดเริ่มต้นของสตริงคำค้นหา หากต้องการใช้สตริง "? and the 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
อักขระทั่วไปที่ต้องเข้ารหัส
อักขระทั่วไปบางตัวที่ต้องเข้ารหัส ได้แก่
อักขระที่ไม่ปลอดภัย | ค่าที่เข้ารหัส |
---|---|
Space | %20 |
" | %22 |
< | %3C |
> | %3E |
# | %23 |
% | %25 |
| | %7C |
บางครั้งการแปลง URL ที่คุณได้รับจากข้อมูลที่ผู้ใช้ป้อนอาจเป็นเรื่อง ยาก เช่น ผู้ใช้อาจป้อนที่อยู่เป็น "5th&Main St." โดยทั่วไป คุณควรสร้าง URL จากส่วนต่างๆ โดยถือว่า อินพุตของผู้ใช้เป็นอักขระตามตัว
นอกจากนี้ URL ยังจำกัดไว้ที่ 16384 อักขระสำหรับบริการเว็บทั้งหมดของ Google Maps Platform และเว็บ API แบบคงที่ สำหรับบริการส่วนใหญ่ คุณแทบจะไม่ต้องกังวลเรื่องจำนวนอักขระสูงสุดนี้ อย่างไรก็ตาม โปรดทราบว่าบริการบางอย่างมีพารามิเตอร์หลายรายการที่อาจส่งผลให้ URL ยาว