ข้ามไปยังเนื้อหาหลัก

วิธีถอดรหัสสตริงที่เข้ารหัส 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 เปลี่ยน

คู่มือการเข้ารหัส URL