อักขระบางตัวต้องเป็นส่วนหนึ่งของ 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 |
---|---|---|
ตัวอักษรและตัวเลขคละกัน | 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 เพื่อใช้ชุดอักขระนี้โดยทั่วไป จะก่อให้เกิดปัญหา 2 ประการ อันหนึ่งคือ การละเว้นสิ่งใดสิ่งหนึ่ง และการทดแทนอีกอย่างหนึ่งอย่างนั้น
- อักขระที่คุณต้องการจัดการอยู่นอกชุดข้างต้น ตัวอย่างเช่น อักขระในภาษาต่างประเทศ เช่น
上海+中國
ต้องเข้ารหัสโดยใช้อักขระข้างต้น ตามธรรมเนียมที่นิยมกัน มักจะใช้อักขระบวก'+'
เพื่อแทนที่เว้นวรรค (ซึ่งไม่อนุญาตใน URL) ด้วย - อักขระอยู่ภายในชุดด้านบนเป็นอักขระสงวน
แต่จำเป็นต้องใช้จริงๆ
เช่น
?
ใช้ภายใน URL เพื่อระบุจุดเริ่มต้นของสตริงการค้นหา หากต้องการใช้สตริง "? and the Mysterions" คุณจะต้องเข้ารหัสอักขระ'?'
อักขระทั้งหมดที่จะเข้ารหัส URL จะเข้ารหัส
โดยใช้อักขระ '%'
และเลขฐานสิบหก 2 ตัว
ที่สอดคล้องกับอักขระ UTF-8 ตัวอย่างเช่น 上海+中國
ใน UTF-8 จะเป็น%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B
เมื่อเข้ารหัสเป็น URL สตริง ? 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 จะมีอักขระได้ไม่เกิน 16, 384 ตัวสำหรับบริการบนเว็บของ Google Maps Platform ทั้งหมด และเว็บ API แบบคงที่ สำหรับบริการส่วนใหญ่ จำนวนอักขระสูงสุดนี้แทบจะไม่ได้ใช้เลย อย่างไรก็ตาม โปรดทราบว่าบริการบางอย่างมีพารามิเตอร์หลายรายการที่อาจส่งผลให้มี URL แบบยาว