เข้ารหัส 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 & friendshello%20world%20%26%20friends
café/menu?id=123caf%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 ทั้งหมด

มีการอัปโหลดอะไรไหม?

ไม่ — การเข้ารหัสและถอดรหัสทำงานทั้งหมดในเบราว์เซอร์ของคุณ