URL Encoder & Decoder
เข้ารหัสข้อความแบบ percent-encoding สำหรับ URL และ query string ถอดรหัส URL ที่เข้ารหัสไว้ และแยก URL ใดก็ได้เป็นส่วนประกอบพร้อมถอดรหัสพารามิเตอร์ query
ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด
ส่วนประกอบ
พารามิเตอร์ query
วิธีใช้ URL Encode / Decode
- เลือก เข้ารหัส หรือ ถอดรหัส
- เมื่อเข้ารหัส ให้เลือก Component สำหรับค่า query หรือส่วนของ path เดียว URL เต็ม เพื่อคงโครงสร้าง URL ไว้ หรือ Form data สำหรับ
application/x-www-form-urlencoded - วางข้อความของคุณ ผลลัพธ์จะแสดงทันที และ escape ที่ผิดรูปแบบจะถูกแจ้งพร้อมตำแหน่ง
- วาง URL แบบเต็มลงใน ตัวแยก URL เพื่อดู host, path, fragment และพารามิเตอร์ query ทุกตัวที่ถอดรหัสแล้ว
URL encoding คืออะไร?
URL มีได้เฉพาะชุดอักขระ ASCII ที่จำกัด (RFC 3986) อักขระอื่นทั้งหมด รวมถึงช่องว่าง ตัวอักษรที่ไม่ใช่ภาษาอังกฤษ และอักขระที่มีความหมายพิเศษอย่าง &, ? และ # จะเขียนเป็นเครื่องหมายเปอร์เซ็นต์ตามด้วยเลขฐานสิบหกสองหลักสำหรับแต่ละไบต์ UTF-8 ช่องว่างกลายเป็น %20 และ é กลายเป็น %C3%A9
encodeURIComponent vs. encodeURI
| ฟังก์ชัน | ไม่เข้ารหัส | ใช้สำหรับ |
|---|---|---|
encodeURIComponent | A-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” หมายถึงอะไร?
%E9 สำหรับ é แทนที่จะเป็น %C3%A9) หรือสตริงถูกตัดกลางอักขระควรเข้ารหัสทั้ง URL หรือเฉพาะพารามิเตอร์?
= และ & การเข้ารหัส URL ทั้งหมดด้วยโหมด component จะ escape :// ด้วยและทำให้ URL ใช้ไม่ได้การเข้ารหัสซ้ำสองครั้งเป็นปัญหาหรือไม่?
%20 เป็น %2520 หากคุณเห็น %25 ตามด้วยเลขฐานสิบหก ค่านั้นน่าจะถูกเข้ารหัสสองครั้ง ให้ถอดรหัสสองครั้งเพื่อได้ค่าเดิม