Percent-Encoding คืออะไร และทำไมจึงจำเป็น?
Percent-encoding เป็นเสาหลักสำคัญของโครงสร้างพื้นฐาเว็บสมัยใหม่ ซึ่งกำหนดวิธีการส่งข้อมูลผ่านอินเทอร์เน็ต โดยพื้นฐานแล้ว อินเทอร์เน็ตพึ่งพา Uniform Resource Identifiers (URIs) ในการระบุตำแหน่งของทรัพยากร อย่างไรก็ตาม ข้อกำหนด URI (RFC 3986) จำกัดอักขระที่สามารถใช้ได้อย่างปลอดภยภายใน URL อย่างเคร่งครัด อักขระที่อนุญาต ซึ่งเรียกว่า 'unreserved characters' จกัดไว้เฉพาะอักขระตัวเลขและตัวอักษรภาษาอังกฤษทั้งตัวิมพ์ใหญ่และตัวพิมพ์เล็ก (A-Z, a-z, 0-9), เครื่องหมายยัติภังค์ (-), ุด (.), ขีดล่าง (_) และติลเดอ (~) อักขระอื่น ๆ ทั้งหมดถือว่ 'ไม่ปลอดภัย' หรือ 'สงวนไว้' เนื่องจากมีความหมายทางโครงสร้างพิเศษในรูปแบบ URL ตัวอย่างเช่น เครื่องหมายแอมเปอร์แซนด์ (&) ใช้เพื่อแยกพรามิเตอร์คิวรี เครื่องหมายเท่ากับ (=) ใช้กำหนดค่า และเครื่องหมายทับ (/) ใช้กำหนดเส้นทางไดเรกทอรี หากคุณจำเป็นต้องส่งอักขระ '&' เป็นส่วนนึ่งของข้อมูล ไม่ใช่ในฐานะตัวตัวแยกโครงสร้าง อักขระนั้นจะต้องถูกปลี่ยนเป็น Percent-encoded
เมื่ออักขระจำเป็นต้องถูกแปลงเป็น Percent-encoded อนดับแรกจะถูกแปลงเป็นค่าไบต์ที่สอดคล้องกันตามมาตรฐานการเข้ารหัสอกขระ UTF-8 แต่ละไบต์จะถูกแทนด้วยเลขฐานสิบหกสองหลัก ซึ่งนำหน้าด้วยเคร่องหมายเปอร์เซ็นต์ (%) ตัวอย่างเช่น อักขระช่องว่างตรงกับค่าไบต์ 32 ในเลขฐานสิบ หรือ 20 ในเลขฐานสิบหก ดังนั้น ช่องว่างจึงกลายเป็น '%20' สัญลกษณ์ 'at' (@) กลายเป็น '%40' และเครื่องหมายจุลภาค (,) กลายเป็น '%2C' การแปลงอย่างเป็นระบบนี้ช่วยให้มั่นใจได้ว่าเว็บเซิร์ฟเวอร์ โหลดบาลานเซอ์ และเบราว์เซอร์สามารถตีความขอบเขตของ URL ได้อย่างครอบคลุมตรงกัโดยไม่มีความคลุมเครือหรือข้อมูลเสียหาย หากไม่มี Percent-encoding การส่งสตริงิวรีที่ซับซ้อนซึ่งมีข้อมูลที่ผู้ใช้ป้อนแบบทั่วไปจะทำให้โครงร้าง URL เสียหาย นำไปสู่ข้อผิดพลาด 400 Bad Request ลิงก์เสีย หรือแม้แต่ช่องหว่ด้านความปลอดภัยร้ายแรงอย่าง HTTP Parameter Pollution
ในอดีต ระบบที่ต่างกันจะจดการกับการเข้ารหัส URL ในรูปแบบที่หลากหลาย ซึ่งบางครั้งนำไปสู่ฝนร้ายด้านความเข้ากันได้ ตัวอย่างเช่น ข้อมูลฟอร์มที่ส่งผ่านปรเภทเนื้อหา application/x-www-form-urlencoded โดยดั้งเดิมจะเข้ารหัสช่องว่างเป็นเครื่องหมายบวก (+) ในขณะที่ RFC 3986 กำหนดให้ใช้ '%20' อย่างเคร่งครัด เฟรมเวิร์กละภาษาการพัฒนาเว็บสมัยใหม่โดยทั่วไปจะซ่อนรายละเอียดปลีกย่อยเหล่านี้ว้ แต่การมีเครื่องมือที่ทำงานได้ดี น่าเชื่อถือ และฟรี 100% ในารเข้ารหัสแบบ Percent-encode สตริงด้วยตนเองยังคงเป็นสิ่งจำเป็นอย่างยิ่งสำหรับการดีบัก การทดสอบ API และการสร้างดีปลิงก์ที่ซับซ้อน ด้วยการเขาใจกลไกพื้นฐานของ Percent-encoding นักพัฒนาสามารถมั่นใจได้ว่าแอปพลิเคชัของตนมีความแข็งแกร่งต่อข้อมูลอักขระที่หลากหลาย สามารถจัดารทุกอย่างตั้งแต่ข้อความ ASCII มาตรฐานไปจนถึงอิโมจิ Unicode แบบหลายไบต์ที่ซับซ้อนได้อย่างมีประสิทธิภาพ