วิธีเข้ารหัสและถอดรหัส URL
หากคุณเคยเห็น %20 ใน URL ที่ควรเป็นช่องว่าง หรือ %C3%A9 ที่ควรเป็นอักขระที่มีเครื่องหมาย คุณได้พบกับการเข้ารหัส URL แล้ว มันเป็นพื้นฐานของเว็บ และการเข้าใจมันช่วยดีบักลิงก์ที่ขาด ปัญหา API และการส่งฟอร์ม
การเข้ารหัส URL ทำอะไร
URL สามารถมีอักขระที่ปลอดภัยจำนวนจำกัดเท่านั้น: ตัวอักษร (A-Z, a-z) ตัวเลข (0-9) และอักขระพิเศษไม่กี่ตัว (-, _, ., ~) ทุกอย่างที่เหลือ — ช่องว่าง สำเนียง อิโมจิ สัญลักษณ์เช่น &, =, #, ? — ต้องถูกแปลงเป็นรูปแบบที่ปลอดภัย
การเข้ารหัส URL (เรียกอีกอย่างว่า percent-encoding) แทนที่อักขระที่ไม่ปลอดภัยด้วย % ตามด้วยค่าฐานสิบหกของไบต์:
| อักขระ | เข้ารหัส |
|---|---|
| ช่องว่าง | %20 |
| & | %26 |
| = | %3D |
| # | %23 |
| ? | %3F |
| / | %2F |
| @ | %40 |
เมื่อใดที่จำเป็นต้องเข้ารหัส URL
- พารามิเตอร์การค้นหาที่มีอักขระพิเศษ — คำสั่งเช่น
price > 100 & category = shoesต้องการการเข้ารหัสเพื่อทำงานใน URL - อักขระที่ไม่ใช่ละตินใน URL — ชื่อ เมือง หรือเนื้อหาในภาษาอื่นต้องถูกเข้ารหัส
- คำขอ API — เมื่อสร้างการเรียก API ด้วยตนเอง ค่าพารามิเตอร์มักต้องการการเข้ารหัส
- การดีบัก — เมื่อ URL ไม่ทำงาน การถอดรหัสเปิดเผยค่าจริง
วิธีเข้ารหัสและถอดรหัส
- เลือกเข้ารหัสหรือถอดรหัส — เลือกทิศทาง ใช้ encodeURIComponent สำหรับพารามิเตอร์การค้นหาหรือ encodeURI สำหรับ URL ทั้งหมด
- วางอินพุตของคุณ — ป้อนข้อความหรือ URL ผลลัพธ์อัปเดตทันที
- คัดลอกเอาต์พุต — ใช้ผลลัพธ์ในโค้ด คำขอ API หรือเบราว์เซอร์ของคุณ
เคล็ดลับ
- เข้ารหัสค่า ไม่ใช่ URL ทั้งหมด — หากคุณเข้ารหัส URL ทั้งหมด สแลชและเครื่องหมายโคลอนที่จัดโครงสร้าง URL จะถูกเข้ารหัสด้วย ซึ่งทำให้ URL เสีย เข้ารหัสเฉพาะค่าภายในพารามิเตอร์การค้นหา
- การเข้ารหัสซ้ำ — การเข้ารหัสสตริงที่เข้ารหัสแล้วผลิตสิ่งเช่น
%2520(the%กลายเป็น%25) หาก URL ของคุณดูผิด ตรวจสอบว่ามีบางอย่างถูกเข้ารหัสสองครั้งหรือไม่ - ถอดรหัสเพื่อดีบัก — เมื่อคำขอ API ล้มเหลวหรือ URL ดูอ่านไม่ออก ให้ถอดรหัสเพื่อดูค่าจริง สิ่งนี้มักเปิดเผยปัญหาในทันที
- ใช้ฟังก์ชันที่มาในตัวของภาษา — ในโค้ดการผลิต ใช้
encodeURIComponent()(JavaScript),urllib.parse.quote()(Python) หรือURLEncoder.encode()(Java) แทนที่จะเข้ารหัสด้วยมือเสมอ
คำถามที่พบบ่อย
ความแตกต่างระหว่าง encodeURI และ encodeURIComponent คืออะไร?
encodeURI รักษาอักขระที่ถูกต้องในโครงสร้าง URL (สแลช เครื่องหมายโคลอน เครื่องหมายคำถาม) encodeURIComponent เข้ารหัสทุกอย่างยกเว้นตัวอักษร ตัวเลข และอักขระที่ปลอดภัยไม่กี่ตัว ใช้ encodeURIComponent สำหรับค่าพารามิเตอร์การค้นหา encodeURI สำหรับ URL ทั้งหมด
ทำไมช่องว่างถึงกลายเป็น %20 หรือ +?
ในการเข้ารหัส URL ช่องว่างกลายเป็น %20 ในข้อมูลฟอร์ม (application/x-www-form-urlencoded) ช่องว่างกลายเป็น + ทั้งคู่ถูกต้องในบริบทของตน แต่ %20 เป็นมาตรฐานสากลสำหรับ URL
ฉันต้องเข้ารหัส URL ของฉันด้วยตนเองหรือไม่?
ในกรณีส่วนใหญ่ ภาษาหรือเฟรมเวิร์กของคุณจัดการการเข้ารหัสโดยอัตโนมัติ การเข้ารหัสด้วยตนเองมีประโยชน์เมื่อสร้าง URL ด้วยมือ ดีบักคำขอ API หรือทำงานกับสตริงคำขอที่มีอักขระพิเศษ
ข้อมูลของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่?
ไม่ การเข้ารหัสและการถอดรหัสทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ