วิธีถอดรหัสสตริงที่เข้ารหัส URL
การถอดรหัสคือการย้อนกลับ percent-encoding: ลำดับ %XX แต่ละชุดกลายเป็นหนึ่งไบต์ แล้วไบต์ทั้งหมดถูกอ่านเป็นข้อความ UTF-8 โหมดส่วนประกอบใช้ decodeURIComponent() ผลลัพธ์จึงตรงกับค่าเดิมทุกประการ
ตัวอย่างการคำนวณ
ลำดับ UTF-8 หลายไบต์กลายเป็นอักขระเดียว
- ข้อมูลเข้า
- caf%C3%A9%20%26%20cr%C3%A8me
- ผลลัพธ์ ·
decodeURIComponent() - café & crème
%20 กลายเป็นช่องว่าง แต่ + ยังคงเป็นเครื่องหมายบวกตามตัวอักษร
- ข้อมูลเข้า
- a+b%20c
- ผลลัพธ์ ·
decodeURIComponent() - a+b c
ลำดับสุดท้ายขาดเลขฐานสิบหกไปหนึ่งหลัก เครื่องมือจึงแสดงข้อผิดพลาด
- ข้อมูลเข้า
- %E0%A4%A
- ผลลัพธ์ ·
decodeURIComponent() - URL ที่เข้ารหัสไม่ถูกต้อง
เมื่อเติมหลักที่ขาดไป ทั้งสามไบต์จะถอดรหัสเป็นอักษรเทวนาครีหนึ่งตัว
- ข้อมูลเข้า
- %E0%A4%A4
- ผลลัพธ์ ·
decodeURIComponent() - त
วิธีที่เครื่องมือจัดการ
- ลำดับ %XX แต่ละชุดคือหนึ่งไบต์ และไบต์ที่อยู่ติดกันจะถูกถอดรหัสรวมกันเป็น UTF-8 ดังนั้น %C3%A9 จึงกลายเป็น é
- เครื่องหมายบวกไม่ถูกถือว่าเป็นช่องว่าง: + ยังคงเป็น + หากข้อความมาจากฟอร์ม HTML ให้แทนที่ + ด้วย %20 ก่อนถอดรหัส
- หากมีลำดับใดไม่ครบหรือไม่ใช่ UTF-8 ที่ถูกต้อง ข้อมูลทั้งหมดจะถูกปฏิเสธพร้อมข้อผิดพลาด จะไม่มีการถอดรหัสเพียงบางส่วน
- โหมด URL แบบเต็ม (decodeURI) จะคงรหัสของอักขระสงวน เช่น %26, %2F และ %3F ไว้ เพื่อไม่ให้โครงสร้างของ URL เปลี่ยน