นักพัฒนา

ตัวเข้ารหัส / ตัวถอดรหัส URL

ช่องว่าง สัญลักษณ์ และอักขระพิเศษทำลาย URL — การเข้ารหัสแบบเปอร์เซ็นต์ช่วยแก้ปัญหานี้ เข้ารหัส URL ใด ๆ เพื่อการส่งข้อมูลอย่างปลอดภัย หรือถอดรหัสกลับเป็นข้อความที่อ่านได้ ทันที

เครื่องมือนี้ช่วยคุณได้ไหม?

ตัวเข้ารหัส / ตัวถอดรหัส URL คืออะไร?

ตัวเข้ารหัส/ถอดรหัส URL เป็นเครื่องมือพัฒนาเว็บที่จำเป็นซึ่งแปลงระหว่างข้อความปกติและรูปแบบการเข้ารหัสร้อยละที่ปลอดภัยสำหรับ URL เมื่อ URL มีช่องว่าง สัญลักษณ์พิเศษ หรืออักขระที่ไม่ใช่ ASCII เช่น ตัวอักษรที่มีเครื่องหมายเสริมและอิโมจิ ข้อความจะเสียหายหากไม่ได้เข้ารหัสอย่างถูกต้อง เครื่องมือนี้ให้การเข้ารหัสและถอดรหัสทันทีพร้อมรองรับทั้งโหมด URL (การเข้ารหัส URL ทั้งหมด) และโหมดส่วนประกอบ (การเข้ารหัสค่าพารามิเตอร์แบบสอบถามแต่ละรายการ) รวมถึงโหมดชุดสำหรับประมวลผลหลายสตริงพร้อมกัน

เมื่อไหร่ควรใช้เครื่องคำนวณนี้

  • คุณกำลังสร้าง URL ที่มีพารามิเตอร์คิวรีซึ่งมีช่องว่าง สัญลักษณ์ หรืออักขระที่ไม่ใช่ ASCII
  • คุณต้องถอดรหัส URL แบบเปอร์เซ็นต์เพื่ออ่านเนื้อหาจริง
  • คุณกำลังแก้ไขจุดบกพร่องของ API ที่ปฏิเสธ URL ของคุณเพราะอักขระพิเศษที่ไม่ได้เข้ารหัส
  • คุณกำลังประมวลผล URL ที่ผู้ใช้ส่งเข้ามา ซึ่งต้องถูกทำความสะอาดก่อนใช้งาน
  • คุณต้องเข้ารหัสหรือถอดรหัสหลายส่วนของ URL พร้อมกันเป็นชุด
  • คุณกำลังสร้างการเปลี่ยนเส้นทางหรือ URL callback ที่ต้องเข้ารหัสพารามิเตอร์อย่างถูกต้อง

ขั้นตอน:

  1. พิมพ์หรือวางข้อความ/URL ที่คุณต้องการเข้ารหัสหรือถอดรหัส
  2. เลือกโหมดเข้ารหัสหรือถอดรหัส
  3. คลิกปุ่มแปลง
  4. คัดลอกผลลัพธ์เพื่อใช้ในแอปพลิเคชันของคุณ

สูตร

การเข้ารหัส: อักขระที่ไม่ปลอดภัย → % + รหัสฐานสิบหก 2 หลัก ➡ การถอดรหัส: %XX → อักขระต้นฉบับ

กรณีใช้งาน

  • สร้างสตริงคิวรีที่ปลอดภัยสำหรับ URL
  • ประมวลผลพารามิเตอร์คำขอ API
  • แก้ไขจุดบกพร่องของ URL ที่ถูกเข้ารหัส
  • สร้าง slug และพาธที่เหมาะกับ URL

ประโยชน์หลัก

  • เข้ารหัสและถอดรหัสทันทีพร้อมผลลัพธ์แบบเรียลไทม์
  • รองรับทั้งโหมด URL และโหมดส่วนประกอบสำหรับบริบทต่างๆ
  • โหมดชุดสำหรับเข้ารหัสหรือถอดรหัสหลายสตริงพร้อมกัน
  • จัดการอักขระพิเศษทั้งหมดรวมถึง Unicode และอิโมจิ
  • 100% บนเบราว์เซอร์ — ไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์
  • การนับอักขระแบบภาพเพื่อยืนยันว่าการเข้ารหัสไม่ได้ทำซ้ำหรือตัดทอนอินพุต

เคล็ดลับ

  • เข้ารหัสพารามิเตอร์ URL ที่สร้างโดยผู้ใช้เสมอรวมถึงก่อนนำไปใช้ใน URL
  • ใช้ encodeURIComponent() ใน JavaScript สำหรับค่าพารามิเตอร์แบบสอบถามแต่ละรายการ
  • ถอดรหัส URL ก่อนแสดงให้ผู้ใช้เพื่อความชัดเจน
  • ระวังการเข้ารหัสสองครั้ง: หากคุณเห็น %25 ตามด้วยตัวเลขฐานสิบหกเพิ่มเติม URL อาจถูกเข้ารหัสสองครั้ง
  • ใช้โหมดคอมโพเนนต์เมื่อสร้างสตริงคำค้นหาและโหมด URL เมื่อเข้ารหัสเส้นทาง URL ทั้งหมดหรือ URL แบบเต็ม

ข้อผิดพลาดที่พบบ่อย

  • การเข้ารหัสสองครั้งของ URL โดยการเข้ารหัส URL ที่เข้ารหัสแล้ว แปลง %20 เป็น %2520
  • ใช้บริบทการเข้ารหัสผิด — โหมด URL และส่วนประกอบให้ผลลัพธ์ที่แตกต่างกัน
  • ลืมว่า + แสดงเพียงช่องว่างในข้อมูล application/x-www-form-urlencoded
  • ไม่จัดการอักขระที่ไม่ใช่ ASCII อย่างถูกต้อง — ตรวจสอบให้แน่ใจเสมอว่ามีการเข้ารหัส UTF-8 ก่อนการเข้ารหัสเปอร์เซ็นต์

คำศัพท์สำคัญ

การเข้ารหัสร้อยละ: กลไกมาตรฐานสำหรับเข้ารหัสอักขระใน URL แทนที่อักขระที่ไม่ปลอดภัยด้วย % ตามด้วยรหัส ASCII ฐานสิบหกสองหลัก
สตริงแบบสอบถาม: ส่วนของ URL หลังเครื่องหมาย ? ประกอบด้วยคู่คีย์-ค่าคั่นด้วย &
อักขระที่สงวนไว้: อักขระเช่น :, /, ?, #, [, ], @, !, $, &, (, ), *, +, ,, ;, = มีความหมายทางไวยากรณ์พิเศษใน URL ตาม RFC 3986
โหมดส่วนประกอบ vs โหมด URL: โหมดส่วนประกอบเข้ารหัสอักขระมากกว่าและสำหรับค่าแต่ละรายการ; โหมด URL รักษาโครงสร้าง URL สำหรับเส้นทางทั้งหมด

แนวคิดที่เกี่ยวข้อง

  • การเข้ารหัสแบบเปอร์เซ็นต์: กลไกการแทนที่อักขระที่ไม่ปลอดภัยด้วย % ตามด้วยรหัส ASCII ฐานสิบหกสองหลักเพื่อการส่ง URL อย่างปลอดภัย
  • สตริงคิวรี: ส่วนของ URL หลังอักขระ ? ซึ่งประกอบด้วยคู่คีย์-ค่า คั่นด้วยอักขระ &
  • อักขระสงวน: อักขระเช่น :, /, ?, #, [, ], @, !, $, &, (, ), *, +, ,, ;, = ที่มีความหมายพิเศษในไวยากรณ์ URL ตาม RFC 3986
  • อักขระที่ปลอดภัยสำหรับ URL: อักขระที่ไม่ได้สงวน (ตัวอักษร ตัวเลข -, _, ., ~) ที่ไม่ต้องเข้ารหัสใน URL
  • encodeURIComponent เทียบกับ encodeURI: ฟังก์ชัน JavaScript โดย encodeURIComponent เข้ารหัสทุกอย่างยกเว้นตัวอักษร ตัวเลข และ _*-.~ สำหรับค่าแต่ละค่า ในขณะที่ encodeURI รักษาอักขระโครงสร้าง URL สำหรับ URL เต็ม

ตัวอย่าง

การเข้ารหัส "Hello World & Friends!" → "Hello%20World%20%26%20Friends%21" การถอดรหัส "search%3Fq%3Dhello+world" → "search?q=hello world"

การตีความผลลัพธ์

ตัวเข้ารหัสแปลงอักขระ URL ที่ไม่ปลอดภัย (ช่องว่าง & ? # ที่ไม่ใช่ ASCII ฯลฯ) เป็นรูปแบบการเข้ารหัสแบบเปอร์เซ็นต์ โดยแต่ละอักขระกลายเป็น % ตามด้วยรหัสฐานสิบหกสองหลัก ตัวถอดรหัสย้อนกระบวนการนี้ คืนค่าข้อความต้นฉบับที่อ่านได้ จำนวนอักขระช่วยให้คุณตรวจสอบว่าการเข้ารหัสไม่ได้ทำสำเนาซ้ำหรือตัดทอนข้อมูลนำเข้าโดยไม่คาดคิด โหมดคอมโพเนนต์เข้ารหัสชุดอักขระที่กว้างขึ้นและออกแบบมาสำหรับการเข้ารหัสค่าพารามิเตอร์คิวรีแต่ละค่า โหมด URL เข้มงวดกว่าเกี่ยวกับสิ่งที่ถูกเข้ารหัสและออกแบบมาสำหรับการเข้ารหัสพาธ URL ทั้งหมดหรือ URL เต็ม ใช้โหมดคอมโพเนนต์เมื่อคุณสร้างสตริงคิวรี และโหมด URL เมื่อคุณเข้ารหัส URL ที่สมบูรณ์ โหมดชุดช่วยให้คุณเข้ารหัสหรือถอดรหัสหลายบรรทัดพร้อมกัน ซึ่งมีประโยชน์เมื่อคุณมีรายการ URL หรือพารามิเตอร์ที่ต้องประมวลผล แต่ละบรรทัดถือเป็นข้อมูลนำเข้าแยกกัน และผลลัพธ์ทั้งหมดจะแสดงร่วมกันเพื่อให้คัดลอกได้ง่าย

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

ทำไม URL ถึงต้องมีการเข้ารหัส?
URL สามารถมีได้เพียงอักขระ ASCII บางตัวเท่านั้น อักขระเช่นช่องว่าง & ? # และอักขระที่ไม่ใช่ ASCII ต้องถูกเข้ารหัส (แบบเปอร์เซ็นต์) เพื่อให้แน่ใจว่าการส่งข้อมูลผ่านอินเทอร์เน็ตปลอดภัย
การเข้ารหัสแบบเปอร์เซ็นต์คืออะไร?
การเข้ารหัสแบบเปอร์เซ็นต์จะแทนที่อักขระที่ไม่ปลอดภัยด้วยเครื่องหมาย % ตามด้วยรหัสฐานสิบหกสองหลัก ตัวอย่างเช่น ช่องว่างกลายเป็น %20 และ & กลายเป็น %26
การเข้ารหัส URL เหมือนกับการเข้ารหัส HTML หรือไม่?
ไม่เหมือน การเข้ารหัส URL (แบบเปอร์เซ็นต์) ใช้สำหรับ URL ส่วนการเข้ารหัส HTML ใช้เอนทิตี้เช่น &amp; แทน & หรือ &lt; แทน < ทั้งสองมีจุดประสงค์ที่แตกต่างกันในการพัฒนาเว็บ
เมื่อใดควรใช้โหมด URL แทนโหมดคอมโพเนนต์?
ใช้โหมดคอมโพเนนต์เมื่อเข้ารหัสค่าพารามิเตอร์คิวรีเดียว (เช่น คำค้นหา) ใช้โหมด URL เมื่อเข้ารหัสพาธ URL เต็ม หรือเมื่อคุณต้องการให้สตริงทั้งหมดปลอดภัยสำหรับ URL โหมดคอมโพเนนต์เข้ารหัสอักขระมากกว่าเพราะถือว่าค่านั้นจะถูกวางไว้ภายในโครงสร้าง URL
ทำไมการเข้ารหัส 'Hello World' จึงได้ 'Hello%20World' แทนที่จะเป็น 'Hello+World'?
ในส่วนย่อยของพาธ URL ช่องว่างจะถูกเข้ารหัสเป็น %20 การเข้ารหัสช่องว่างด้วย + ใช้เฉพาะในข้อมูล application/x-www-form-urlencoded (การส่งฟอร์ม HTML) แนวทางปฏิบัติที่ดีที่สุดในปัจจุบันคือใช้ %20 อย่างสม่ำเสมอใน URL เครื่องคิดเลขนี้ใช้ %20 สำหรับการเข้ารหัส URL
ฉันสามารถเข้ารหัสอักขระที่ไม่ใช่ ASCII เช่น อีโมจิหรือตัวอักษรที่มีเครื่องหมายกำกับเสียงได้ไหม?
ได้ อักขระที่ไม่ใช่ ASCII จะถูกแปลงเป็นไบต์ UTF-8 ก่อน แล้วแต่ละไบต์จึงถูกเข้ารหัสแบบเปอร์เซ็นต์ ตัวอย่างเช่น อีโมจิ ☺ (U+1F600) กลายเป็น %F0%9F%98%80 อักขระที่มีเครื่องหมายกำกับเสียงเช่น é (U+00E9) กลายเป็น %C3%A9 นี่คือแนวทางมาตรฐานที่กำหนดใน RFC 3986
ความแตกต่างระหว่างสิ่งนี้กับการเข้ารหัสเอนทิตี้ HTML คืออะไร?
การเข้ารหัส URL (แบบเปอร์เซ็นต์) ใช้สำหรับ URL — แปลงอักขระเป็นรหัสฐานสิบหก %XX การเข้ารหัสเอนทิตี้ HTML แปลงอักขระเป็นเอนทิตี้แบบมีชื่อหรือตัวเลข เช่น &amp; แทน & หรือ &#8364; แทน € ทั้งสองใช้เพื่อจุดประสงค์ที่ต่างกันโดยสิ้นเชิงและไม่สามารถใช้แทนกันได้
ทำไม URL บางรายการถึงทำงานได้โดยไม่ต้องเข้ารหัส แม้จะมีอักขระพิเศษอยู่?
เบราว์เซอร์สมัยใหม่เข้ารหัส URL โดยอัตโนมัติเมื่อคุณนำทางไปยัง URL นั้นหรือส่งฟอร์ม อย่างไรก็ตาม เมื่อคุณสร้าง URL ด้วยโปรแกรม (ในโค้ด การเรียก API หรือการเปลี่ยนเส้นทางฝั่งเซิร์ฟเวอร์) คุณต้องเข้ารหัสด้วยตนเอง เพราะเซิร์ฟเวอร์จะไม่ทำให้คุณ
มีความเสี่ยงจากการเข้ารหัสซ้ำสองหรือไม่?
มี หากคุณเข้ารหัส URL ที่ถูกเข้ารหัสไว้แล้ว %20 จะกลายเป็น %2520 ซึ่งไม่ถูกต้อง ตรวจสอบเสมอว่าข้อมูลนำเข้าของคุณถูกเข้ารหัสแล้วหรือไม่ก่อนเข้ารหัสอีกครั้ง เครื่องคิดเลขนี้แสดงผลที่ถอดรหัสแล้วเพื่อให้คุณตรวจสอบว่าผลลัพธ์ถูกต้อง
ฉันจะจัดการกับ URL ที่เข้ารหัสแล้วใน JavaScript อย่างไร?
ใช้ decodeURIComponent() ในการถอดรหัสและ encodeURIComponent() ในการเข้ารหัสค่าแต่ละค่า สำหรับ URL เต็มให้ใช้ decodeURI() และ encodeURI() ซึ่งรักษาอักขระโครงสร้างของ URL (/, ?, # ฯลฯ) อย่าใช้ escape() หรือ unescape() เด็ดขาด — ทั้งสองถูกเลิกใช้งานและจัดการ Unicode ไม่ถูกต้อง

ค้นพบเครื่องมือเพิ่มเติม

คัดสรรใหม่จากคลังเครื่องมือทั้งหมดของเรา