เข้ารหัส URL
เข้ารหัสและถอดรหัสส่วนประกอบของ URL
การเข้ารหัส URL / เปอร์เซ็นต์คืออะไร?
URL สามารถมีอักขระ ASCII ได้เพียงชุดเล็ก ๆ เท่านั้น อะไรก็ตามที่ไม่ใช่ — ช่องว่าง ตัวอักษรที่มีเครื่องหมาย อีโมจิ อักขระที่สงวนไว้เช่น `&`, `=`, `?` — ต้องถูกเข้ารหัสเปอร์เซ็นต์เป็น `%` ตามด้วยเลขฐานสิบหกสองหลักที่แทนที่ไบต์ UTF-8 ช่องว่างจะกลายเป็น `%20`, `é` จะกลายเป็น `%C3%A9`, เครื่องหมายคำถามจะกลายเป็น `%3F`.
ใช้การเข้ารหัส 'ส่วนประกอบ' เมื่อหนีอักขระชิ้นเดียว (ค่าพารามิเตอร์คำถาม ส่วนของเส้นทาง) — เทียบเท่ากับ `encodeURIComponent` ของ JavaScript ใช้การเข้ารหัส 'URL ทั้งหมด' เมื่อหนี URL ทั้งหมดที่มีตัวแบ่งโครงสร้างที่คุณต้องการรักษา — เทียบเท่ากับ `encodeURI`.
กรณีการใช้งาน
- สร้างสตริงคำถาม — เข้ารหัสข้อมูลที่ผู้ใช้ป้อนก่อนที่จะใส่ลงในพารามิเตอร์ `?q=`.
- ตรวจสอบบันทึกเซิร์ฟเวอร์ — ถอดรหัส URL ที่เสียหายเพื่ออ่านเส้นทางเดิม (`/Users/%E4%B8%AD%E6%96%87/...`)
- แก้ไขปัญหาการเปลี่ยนเส้นทาง OAuth — วาง `redirect_uri` เพื่อดูว่าการถอดรหัสของการเรียกกลับ OAuth เป็นอย่างไร
- อ่านตัวอย่าง curl — คัดลอก URL ที่เข้ารหัสเปอร์เซ็นต์จากบทแนะนำและถอดรหัสเพื่อทำความเข้าใจคำขอ
ตัวอย่าง
| ข้อมูลนำเข้า | ผลลัพธ์ |
|---|---|
| hello world & friends | hello%20world%20%26%20friends |
| café/menu?id=123 | caf%C3%A9%2Fmenu%3Fid%3D123 (component) or caf%C3%A9/menu?id=123 (full URL) |
คำถามที่พบบ่อย
encodeURI กับ encodeURIComponent ต่างกันอย่างไร?
`encodeURI` จะไม่แตะอักขระโครงสร้าง URL (`:`, `/`, `?`, `#`, `&`, `=`) — ใช้เข้ารหัสทั้ง URL ส่วน `encodeURIComponent` จะเข้ารหัสอักขระเหล่านั้นด้วย — ใช้เข้ารหัสส่วนเดียวที่จะใส่เข้าไปใน URL
รองรับอักขระที่ไม่ใช่ ASCII ไหม?
ได้ อักขระนอกเหนือ ASCII จะถูกเข้ารหัสเป็นไบต์ UTF-8 (1–4 ไบต์) แต่ละไบต์แสดงเป็น `%XX`
เมื่อถอดรหัส `+` ถูกตีความเป็นช่องว่างหรือไม่?
ไม่ เครื่องมือนี้ใช้การถอดรหัส URL มาตรฐาน ซึ่งจะไม่เปลี่ยนแปลง `+` กฎ `+` หมายถึงช่องว่างเป็นกฎเฉพาะสำหรับข้อมูลฟอร์ม `application/x-www-form-urlencoded` และเครื่องมือนี้ไม่มีโหมดการถอดรหัสฟอร์มแยกต่างหาก
ทำไม URL ของฉันถึงเสียหลังจากเข้ารหัส?
คุณได้เข้ารหัสตัวอักษรโครงสร้าง (`:`, `/`, `?`, `#`) ที่จำเป็นต้องคงไว้เป็นตัวอักษร เครื่องมือนี้จะทำการเข้ารหัสส่วนประกอบ (`encodeURIComponent`) เสมอ ซึ่งจะทำให้พวกเขาหลบหนี — ดังนั้นให้เข้ารหัสเฉพาะค่าคำถามหรือส่วนเส้นทางแต่ละค่า ไม่ใช่ URL ทั้งหมด
มีการอัปโหลดอะไรไหม?
ไม่ — การเข้ารหัสและถอดรหัสทำงานทั้งหมดในเบราว์เซอร์ของคุณ
