การเข้ารหัส 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 โ ฆ ษ ณ า ท ด แ ท น ไม่มี 0 1 2 3 4 5 6 7 8 9 สตริงข้อความ การใช้รูปแบบ (http) พอร์ต (8080) ฯลฯ
ไม่ได้จอง - _ ~ สตริงข้อความ
จองแล้ว * ' ( ) : @ & = + $ , / ? % # [ ] อักขระควบคุมและ/หรือสตริงข้อความ

เมื่อสร้าง URL ที่ถูกต้อง คุณต้องตรวจสอบว่า URL นั้นมีเฉพาะอักขระที่แสดงใน การปฏิบัติตาม URL เพื่อใช้ชุดอักขระนี้โดยทั่วไป จะก่อให้เกิดปัญหา 2 อย่าง คือ การละเว้นอย่างมีประสิทธิภาพ 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

อักขระทั่วไปที่ต้องเข้ารหัส

อักขระทั่วไปที่จะต้องเข้ารหัสมีดังนี้

อักขระที่ไม่ปลอดภัย ค่าที่เข้ารหัส
Space %20
" %22
< %3C
> %3E
# %23
% %25
| %7C

การแปลง URL ที่คุณได้รับจากข้อมูลจากผู้ใช้เป็นบางครั้ง ซับซ้อน ตัวอย่างเช่น ผู้ใช้สามารถป้อนที่อยู่เป็น "5th&Main St." โดยทั่วไป คุณควรสร้าง URL จากชิ้นส่วน โดยถือ ข้อมูลจากผู้ใช้เป็นอักขระลิเทอรัล

นอกจากนี้ URL จะมีอักขระได้ไม่เกิน 16, 384 ตัวสำหรับบริการบนเว็บของ Google Maps Platform ทั้งหมด และเว็บ API แบบคงที่ สำหรับบริการส่วนใหญ่ จำนวนอักขระสูงสุดนี้แทบจะไม่ได้ใช้เลย อย่างไรก็ตาม โปรดทราบว่าบริการบางอย่างมีพารามิเตอร์หลายรายการที่อาจส่งผลให้มี URL แบบยาว