การเข้ารหัส URL

อักขระบางตัวต้องไม่เป็นส่วนหนึ่งของ URL (เช่น ช่องว่าง) และอักขระบางตัวมีความหมายพิเศษใน URL ในฟอร์ม HTML ระบบจะใช้อักขระ = เพื่อแยกชื่อออกจากค่า ไวยากรณ์ทั่วไป URI ใช้การเข้ารหัส URL เพื่อจัดการกับปัญหานี้ ขณะที่ฟอร์ม HTML จะแทนที่การแทนที่บางอักขระแทนที่จะใช้การเข้ารหัสดังกล่าว

เช่น ช่องว่างในสตริงจะเข้ารหัสด้วย %20 หรือแทนที่ด้วยเครื่องหมายบวก (+) หากใช้อักขระไปป์ (|) เป็นตัวคั่น อย่าลืมเข้ารหัสท่อเป็น %7C คอมมาในสตริงควรเข้ารหัสเป็น %2C

เราขอแนะนําให้คุณใช้ไลบรารีการสร้าง URL ปกติของแพลตฟอร์มเพื่อเข้ารหัส URL โดยอัตโนมัติเพื่อให้มั่นใจว่า URL จะได้รับการกําหนดเป็นอักขระหลีกอย่างถูกต้องสําหรับแพลตฟอร์ม

การสร้าง URL ที่ถูกต้อง

คุณอาจคิดว่า URL ที่ "ถูกต้อง" จะชัดเจนในตัวเอง แต่ก็ไม่ใช่อย่างนั้น ตัวอย่างเช่น URL ที่ป้อนลงในแถบที่อยู่ในเบราว์เซอร์อาจมีสัญลักษณ์พิเศษ (เช่น "上海+中國") เบราว์เซอร์จะต้องแปลอักขระเหล่านั้นเป็นการเข้ารหัสก่อนการส่ง โทเค็นเดียวกันที่สร้างหรือยอมรับอินพุต UTF-8 อาจถือว่า URL ที่มีอักขระ UTF-8 เป็น "valid" แต่อาจต้องแปลอักขระเหล่านั้นก่อนที่จะส่งไปยังเว็บเซิร์ฟเวอร์ กระบวนการนี้เรียกว่า การเข้ารหัส URL หรือการเข้ารหัสเปอร์เซ็นต์

สัญลักษณ์พิเศษ

เราต้องแปลสัญลักษณ์พิเศษเนื่องจาก URL ทั้งหมดต้องสอดคล้องกับไวยากรณ์ที่ระบุโดยข้อกําหนด Uniform Resource Identifier (URI) ซึ่งหมายความว่า URL จะมีเฉพาะชุดย่อยของอักขระ ASCII พิเศษเท่านั้น ได้แก่ สัญลักษณ์ที่เป็นตัวอักษรและตัวเลขคละกันที่คุณคุ้นเคย และอักขระที่สงวนไว้บางส่วนเพื่อใช้เป็นอักขระควบคุมภายใน URL ตารางนี้จะสรุปอักขระเหล่านี้:

สรุปอักขระของ URL ที่ถูกต้อง
ตั้งค่าอักขระการใช้ URL
ตัวอักษรและตัวเลขคละกัน ก า ร รั บ ข้ อ มู ล แ ล้ ว สตริงข้อความ การใช้สคีม (http), พอร์ต (8080) ฯลฯ
ไม่ได้จอง - _ ~ สตริงข้อความ
จองแล้ว ! * ' ( ) ; : @ & = + $ , / ? % # [ ] ควบคุมอักขระและ/หรือสตริงข้อความ

เมื่อสร้าง URL ที่ถูกต้อง คุณต้องตรวจสอบว่า URL ดังกล่าวมีเฉพาะอักขระเหล่านั้นซึ่งแสดงอยู่ในตารางอักขระ URL ที่ถูกต้อง โดยทั่วไปแล้ว การทําตาม URL เพื่อใช้อักขระชุดนี้จะทําให้เกิดปัญหา 2 อย่าง ได้แก่ การละเว้นบางส่วนและการแทนที่ 1 อย่าง

  • มีอักขระที่คุณต้องการจัดการอยู่นอกชุดด้านบน ตัวอย่างเช่น ต้องเข้ารหัสอักขระภาษาต่างประเทศโดยใช้ 上海+中國 โดยใช้อักขระข้างต้น ตามรูปแบบที่ได้รับความนิยม การเว้นวรรค (ซึ่งไม่อนุญาตให้ใช้ภายใน URL) มักจะแสดงด้วยอักขระบวก '+' ด้วย
  • มีอักขระข้างต้นที่กําหนดให้เป็นอักขระที่สงวนไว้ แต่ต้องใช้ตามตัวอักษร เช่น ระบบจะใช้ ? ภายใน URL เพื่อระบุจุดเริ่มต้นของสตริงการค้นหา หากคุณต้องการใช้สตริง "? และ Mysterions" ก็จะต้องเข้ารหัสอักขระ '?'

อักขระทั้งหมดที่จะเข้ารหัส URL จะได้รับการเข้ารหัสโดยใช้อักขระ '%' และค่าฐานสิบหกสองอักขระ ซึ่งสัมพันธ์กับอักขระ 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 จะมีอักขระไม่เกิน 8, 192 ตัวสําหรับบริการผ่านเว็บ Google Maps Platform และ API เว็บแบบคงที่ทั้งหมด สําหรับบริการส่วนใหญ่ ความยาวจะใกล้จะถึงจํานวนอักขระสูงสุด อย่างไรก็ตาม โปรดทราบว่าบริการบางอย่างมีพารามิเตอร์หลายรายการที่อาจส่งผลให้ URL ยาว