URL Encoder & Decoder

เข้ารหัสข้อความแบบ percent-encoding สำหรับ URL และ query string ถอดรหัส URL ที่เข้ารหัสไว้ และแยก URL ใดก็ได้เป็นส่วนประกอบพร้อมถอดรหัสพารามิเตอร์ query

ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด

เข้ารหัสแล้ว

วิธีใช้ URL Encode / Decode

  1. เลือก เข้ารหัส หรือ ถอดรหัส
  2. เมื่อเข้ารหัส ให้เลือก Component สำหรับค่า query หรือส่วนของ path เดียว URL เต็ม เพื่อคงโครงสร้าง URL ไว้ หรือ Form data สำหรับ application/x-www-form-urlencoded
  3. วางข้อความของคุณ ผลลัพธ์จะแสดงทันที และ escape ที่ผิดรูปแบบจะถูกแจ้งพร้อมตำแหน่ง
  4. วาง URL แบบเต็มลงใน ตัวแยก URL เพื่อดู host, path, fragment และพารามิเตอร์ query ทุกตัวที่ถอดรหัสแล้ว

URL encoding คืออะไร?

URL มีได้เฉพาะชุดอักขระ ASCII ที่จำกัด (RFC 3986) อักขระอื่นทั้งหมด รวมถึงช่องว่าง ตัวอักษรที่ไม่ใช่ภาษาอังกฤษ และอักขระที่มีความหมายพิเศษอย่าง &, ? และ # จะเขียนเป็นเครื่องหมายเปอร์เซ็นต์ตามด้วยเลขฐานสิบหกสองหลักสำหรับแต่ละไบต์ UTF-8 ช่องว่างกลายเป็น %20 และ é กลายเป็น %C3%A9

encodeURIComponent vs. encodeURI

ฟังก์ชันไม่เข้ารหัสใช้สำหรับ
encodeURIComponentA-Z a-z 0-9 - _ . ~ค่า query เดียว ส่วนของ path หรือชื่อพารามิเตอร์
encodeURIรวมถึง : / ? # [ ] @ ! $ & ' ( ) * + , ; =URL ทั้งหมดที่ต้องคงโครงสร้างไว้

การใช้ encodeURI กับค่า query เป็นบั๊กคลาสสิก: & ภายในค่าจะไม่ถูก escape จึงแยกพารามิเตอร์ออกเป็นสองตัว โหมด Component ของเครื่องมือนี้ยัง escape ! ' ( ) * เพื่อให้เป็นไปตาม RFC 3986 อย่างเคร่งครัด

ช่องว่างใช้ %20 หรือ +?

ใน path ช่องว่างต้องเป็น %20 ในการส่งฟอร์ม HTML (application/x-www-form-urlencoded) และ query string หลายแบบ ช่องว่างเขียนเป็น + เมื่อถอดรหัส ให้เปิด ถือว่า + เป็นช่องว่าง สำหรับ form data และปิดเมื่อเครื่องหมายบวกจริงมีความหมาย เช่นใน jane+test@example.com

คำถามที่พบบ่อย

ทำไมจึงได้ “Malformed escape” เมื่อถอดรหัส?
% ต้องตามด้วยเลขฐานสิบหกสองหลักพอดี เครื่องหมายเปอร์เซ็นต์จริง เช่นใน “ลด 50%” ควรถูกเข้ารหัสเป็น %25 ข้อความแสดงข้อผิดพลาดจะบอกตำแหน่งของลำดับที่ผิด
“Invalid UTF-8 byte sequence” หมายถึงอะไร?
ไบต์ไม่ได้ถูกเข้ารหัสเป็น UTF-8 มักเป็นเพราะข้อความถูกสร้างโดยระบบเก่าที่ใช้ Latin-1 (เช่น %E9 สำหรับ é แทนที่จะเป็น %C3%A9) หรือสตริงถูกตัดกลางอักขระ
ควรเข้ารหัสทั้ง URL หรือเฉพาะพารามิเตอร์?
เข้ารหัสชื่อและค่าของแต่ละพารามิเตอร์แยกกันด้วยแบบ component แล้วเชื่อมด้วย = และ & การเข้ารหัส URL ทั้งหมดด้วยโหมด component จะ escape :// ด้วยและทำให้ URL ใช้ไม่ได้
การเข้ารหัสซ้ำสองครั้งเป็นปัญหาหรือไม่?
เป็นปัญหา การเข้ารหัสสตริงที่เข้ารหัสแล้วจะเปลี่ยน %20 เป็น %2520 หากคุณเห็น %25 ตามด้วยเลขฐานสิบหก ค่านั้นน่าจะถูกเข้ารหัสสองครั้ง ให้ถอดรหัสสองครั้งเพื่อได้ค่าเดิม

เครื่องมือที่เกี่ยวข้อง